home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / The World of Computer Software.iso / inter33a.zip / INTERRUP.A < prev    next >
Text File  |  1993-01-03  |  268KB  |  7,058 lines

  1. Interrupt List        Release 33            Last change 1/3/93
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993 Ralf Brown
  3. ---------------------------------------------
  4. Please redistribute the following files unmodified as a group, in a pair of
  5. archives named INTER33A and INTER33B (preferably the original authenticated
  6. PKZIP archives):
  7.     INTERRUP.1ST    the read-me file, containing credits, availability info
  8.     INTERRUP.A    INT 00 through INT 14    \
  9.     INTERRUP.B    INT 15 through INT 1F     \   total 1037 pages at
  10.     INTERRUP.C    INT 20 thru INT 21/7F      \  60 lines per page,
  11.     INTERRUP.D    INT 21/80 through INT 2E   \ 1110 with INTPRINT -p
  12.     INTERRUP.E    INT 2F through INT 2F/BF   / (4500 entries)
  13.     INTERRUP.F    INT 2F/C0 through INT 4F  /
  14.     INTERRUP.G    INT 50 through INT 67     /
  15.     INTERRUP.H    INT 68 through INT FF    /
  16.     INTERRUP.PRI    a brief introduction to interrupts
  17.     INTPRINT.COM    a simple formatter that also generates a list summary
  18.     INTPRINT.DOC    instructions for INTPRINT
  19.     GLOSSARY.LST    a glossary of terms, abbreviations, and acronyms
  20.     MEMORY.LST    format of the BIOS data area
  21. The following files should be distributed in an archive called INTER33C:
  22.     INT.COM        invoke interrupts from commandline
  23.     INT2GUID.*    convert list into TurboPower GUIDE or POPHELP database
  24.     INT2HLP.BAT    Perl script to convert list into QuickHelp database
  25.     INT2QH.*    program to convert list into QuickHelp database
  26.     INTHELP.*    convert list into TurboPower GUIDE database
  27.     INTLIST.E    Epsilon extension for handling list
  28.     INTPRINT.C    source code for INTPRINT
  29. ---------------------------------------------
  30. If you notice any mistakes or omissions, please let me know!  It is only with
  31. YOUR help that the list can continue to grow at the current rate.  Please send
  32. all changes to me rather than distributing a modified version of the list.
  33.  
  34. Please read the file INTERRUP.1ST before asking me any questions.  You may find
  35. that they have already been addressed.
  36.  
  37.      Ralf Brown
  38.  
  39. ARPA: ralf@cs.cmu.edu
  40. UUCP: {ucbvax,harvard}!cs.cmu.edu!ralf
  41. BIT:  ralf%cs.cmu.edu@carnegie
  42. FIDO: Ralf Brown 1:129/26.1
  43.     or post a message to me in the DR_DEBUG echo (I probably won't see it
  44.     unless you address it to me)
  45. CIS:  >INTERNET:ralf@cs.cmu.edu 
  46.  
  47. I reply to all e-mail submissions and inquiries, but some of my replies bounce
  48. because of bad return paths.  If you don't get a response from me within a
  49. reasonable period of time, send it again with a better return path (starting at
  50. harvard or ucbvax for UUCP, from the ARPA Internet for others).
  51. ---------------------------------------------
  52. See INTERRUP.1ST for the key to system abbreviations and a list of the
  53. trademarks mentioned here.
  54. ---------------------------------------------
  55. DISCLAIMER:  THIS MATERIAL IS PROVIDED "AS IS".     I verify the information
  56. contained in this list to the best of my ability, but I cannot be held
  57. responsible for any problems caused by use or misuse of the information,
  58. especially for those functions not officially  documented.  If it is marked
  59. "internal" or undocumented, you should check it carefully to make sure it
  60. works the same way in your version of the software (and please let me know
  61. whether or not it works the same way).    Information marked with "???" is
  62. known to be incomplete or guesswork.
  63. ---------------------------------------------
  64. The use of -> instead of = signifies that the indicated register or register
  65. pair contains a pointer to the specified item, rather than the item itself.
  66. One or more letters may follow the interrupt number; they have the following
  67. meanings:  U - undocumented function, u - partially documented function,
  68. P - available only in protected mode, R - available only in real or V86 mode
  69. ----------00---------------------------------
  70. INT 00 - CPU-generated - DIVIDE ERROR
  71. Desc:    generated if the divisor of a DIV or IDIV instruction is zero or the
  72.       quotient overflows the result register; DX and AX will be unchanged.
  73. Notes:    on an 8086/8088, the return address points to the following instruction
  74.     on an 80286+, the return address points to the divide instruction
  75. SeeAlso: INT 04
  76. ----------01---------------------------------
  77. INT 01 - CPU-generated - SINGLE STEP
  78. Desc:    generated after each instruction if TF (trap flag) is set; TF is
  79.       cleared on invoking the single-step interrupt handler
  80. Notes:    interrupts are prioritized such that external interrupts are invoked
  81.       after the INT 01 pushes CS:IP/FLAGS and clears TF, but before the
  82.       first instruction of the handler executes
  83.     used by debuggers for single-instruction execution tracing, such as
  84.       MSDOS DEBUG's T command
  85. SeeAlso: INT 03
  86. ----------01---------------------------------
  87. INT 01 - CPU-generated (80386+) - DEBUGGING EXCEPTIONS
  88. Desc:    generated by the CPU on various occurrences which may be of interest
  89.       to a debugger program
  90. Note:    events which may trigger the interrupt:
  91.       Instruction address breakpoint fault - will return to execute inst
  92.       Data address breakpoint trap - will return to following instruction
  93.       General detect fault, debug registers in use
  94.       Task-switch breakpoint trap
  95. SeeAlso: INT 03
  96. ----------02---------------------------------
  97. INT 02 - external hardware - NON-MASKABLE INTERRUPT
  98. Desc:    generated by the CPU when the input to the NMI pin is asserted
  99. Notes:    return address points to start of interrupted instruction on 80286+
  100.     although the Intel documentation states that this interrupt is
  101.       typically used for power-failure procedures, it has many other uses
  102.       on IBM-compatible machines:
  103.         Memory parity error: all except Jr, CONV, and some machines
  104.                 without memory parity
  105.         Breakout switch on hardware debuggers
  106.         Coprocessor interrupt: all except Jr and CONV
  107.         Keyboard interrupt: Jr, CONV
  108.         I/O channel check: CONV, PS50+
  109.         Disk-controller power-on request: CONV
  110.         System suspend: CONV
  111.         Real-time clock: CONV
  112.         System watch-dog timer, time-out interrupt: PS50+
  113.         DMA timer time-out interrupt: PS50+
  114.         Low battery: HP 95LX
  115.         Module pulled: HP 95LX
  116. ----------03---------------------------------
  117. INT 03 - CPU-generated - BREAKPOINT
  118. Desc:    generated by the one-byte breakpoint instruction (opcode CCh)
  119. Notes:    used by debuggers to implement breakpoints, such as MSDOS DEBUG's G
  120.       command
  121.     also used by Turbo Pascal versions 1,2,3 when {$U+} specified
  122.     return address points to byte following the breakpoint instruction
  123. SeeAlso: INT 01
  124. ----------0309--SI4647-----------------------
  125. INT 03 - Soft-ICE BACK DOOR COMMANDS
  126.     AH = 09h
  127.     SI = 4647h ('FG')
  128.     DI = 4A4Dh ('JM')
  129.     AL = function
  130.         10h display string in Soft-ICE window
  131.         DS:DX -> ASCIZ string to display (max 100 bytes, 0Dh OK)
  132.         11h execute Soft-ICE command
  133.         DS:DX -> ASCIZ command string (max 100 bytes, 0Dh OK)
  134.         12h get breakpoint information
  135.         Return:    BH = entry number of last breakpoint set
  136.             BL = type of last breakpoint set
  137.                 00h BPM (breakpoint register types)
  138.                 01h I/O
  139.                 02h INTerrupt
  140.                 03h BPX (INT 03h-style breakpoint)
  141.                 04h reserved
  142.                 05h range
  143.             DH = entry number of last breakpoint to be triggered
  144.             DL = type of last triggered breakpoint (see above)
  145. Desc:    this API allows application programs to control some aspects of the
  146.       Soft-ICE debugger
  147. Program: Soft-ICE is a debugger by Nu-Mega Technologies, Inc.
  148. ----------04---------------------------------
  149. INT 04 - CPU-generated - INTO DETECTED OVERFLOW
  150. Desc:    the INTO instruction will generate this interrupt if OF (Overflow Flag)
  151.       is set; otherwise, INTO is effectively a NOP
  152. Note:    may be used for convenient overflow testing (to prevent errors from
  153.       propagating) instead of JO or a JNO/JMP combination
  154. SeeAlso: INT 00
  155. ----------05---------------------------------
  156. INT 05 - PRINT SCREEN
  157. Desc:    dump the current text screen to the first printer
  158. Notes:    normally invoked by the INT 09 handler when PrtSc key is pressed, but
  159.       may be invoked directly by applications
  160.     byte at 0050h:0000h contains status used by default handler
  161.       00h not active
  162.       01h PrtSc in progress
  163.       FFh last PrtSc encountered error
  164.     default handler is at F000h:FF54h in IBM PC and 100%-compatible BIOSes
  165. SeeAlso: INT 10/AH=12h/BL=20h
  166. ----------05---------------------------------
  167. INT 05 - CPU-generated (80186+) - BOUND RANGE EXCEEDED
  168. Desc:    generated by BOUND instruction when the value to be tested is less than
  169.       the indicated lower bound or greater than the indicated upper bound.
  170. Note:    returning from this interrupt re-executes the failing BOUND instruction
  171. ----------06---------------------------------
  172. INT 06 - CPU-generated (80286+) - INVALID OPCODE
  173. Desc:    this interrupt is generated when the CPU attempts to execute an
  174.       invalid opcode (most protected-mode instructions are considered
  175.       invalid in real mode) or a BOUND, LDS, LES, or LIDT instruction
  176.       which specifies a register rather than a memory address
  177. Notes:    return address points to beginning of invalid instruction
  178.     with proper programming, this interrupt may be used to emulate
  179.       instructions which do not exist; many 386 BIOSes emulate the 80286
  180.       undocumented LOADALL instruction which was removed from the 80386+
  181. SeeAlso: INT 0C"CPU",INT 0D"CPU"
  182. ----------06---------------------------------
  183. INT 06 C - HP 95LX - SLEEP/WAKEUP
  184. Desc:    this interrupt is called just before going into light or deep
  185.       (shutdown) sleep and just after returning from light or deep sleep
  186. SeeAlso: INT 0B"HP 95LX",INT 15/AX=4DD4h,INT 15/AH=4Eh
  187. ----------07---------------------------------
  188. INT 07 - CPU-generated (80286+) - PROCESSOR EXTENSION NOT AVAILABLE
  189. Desc:    this interrupt is automatically called if a coprocessor instruction is
  190.       encountered when no coprocessor is installed
  191. Note:    can be used to emulate a numeric coprocessor in software
  192. SeeAlso: INT 09"MATH UNIT PROTECTION"
  193. ----------08---------------------------------
  194. INT 08 - IRQ0 - SYSTEM TIMER
  195. Desc:    generated 18.2 times per second by channel 0 of the 8254 system timer,
  196.       this interrupt is used to keep the time-of-day clock updated
  197. Notes:    programs which need to be invoked regularly should use INT 1C unless
  198.       they need to reprogram the timer while still keeping the time-of-day
  199.       clock running at the proper rate
  200.     default handler is at F000h:FEA5h in IBM PC and 100%-compatible BIOSes
  201.     may be masked by setting bit 0 on I/O port 21h
  202. SeeAlso: INT 1C,INT 4A,INT 50"DESQview",INT 58"DoubleDOS",INT 70,INT 78"GO32"
  203. ----------08---------------------------------
  204. INT 08 - CPU-generated (80286+) - DOUBLE EXCEPTION DETECTED
  205. Desc:    called when multiple exceptions occur on one instruction, or an
  206.       exception occurs in an exception handler
  207. Notes:    called in protected mode if an interrupt above the defined limit of
  208.       the interrupt vector table occurs
  209.     return address points at beginning of instruction with errors or the
  210.       beginning of the instruction which was about to execute when the
  211.       external interrupt caused the exception
  212.     if an exception occurs in the double fault handler, the CPU goes into
  213.       SHUTDOWN mode (which circuitry in the PC/AT converts to a reset);
  214.       this "triple fault" is a faster way of returning to real mode on
  215.       many 80286 machines than the standard keyboard controller reset
  216. ----------09---------------------------------
  217. INT 09 - IRQ1 - KEYBOARD DATA READY
  218. Desc:    this interrupt is generated when data is received from the keyboard.
  219.       This is normally a scan code (from either a keypress *or* a key
  220.       release), but may also be an ACK or NAK of a command on AT-class
  221.       keyboards.
  222. Notes:    this IRQ may be masked by setting bit 1 on I/O port 21h
  223.     if the BIOS supports an enhanced (101/102-key) keyboard, it calls
  224.       INT 15/AH=4Fh after reading the scan code from the keyboard and
  225.       before further processing; all further processing uses the scan
  226.       code returned from INT 15/AH=4Fh
  227.     the default interrupt handler is at F000h:E987h in 100%-compatible
  228.       BIOSes
  229.     the interrupt handler performs the following actions for certain
  230.       special keystrokes:
  231.         Ctrl-Break     clear keyboard buffer, place word 0000h in buffer,
  232.              invoke INT 1B, and set flag at 0040h:0071h
  233.         SysRq     invoke INT 15/AH=85h
  234.         Ctrl-Numlock place system in a tight wait loop until next INT 09
  235.         Ctrl-Alt-Del jump to BIOS startup code (either F000h:FFF0h or the
  236.                destination of the jump at that address)
  237.         Shift-PrtSc     invoke INT 05
  238.     DRDOS hooks this interrupt to control the cursor shape (underscore/
  239.       half block) for overwrite/insert mode
  240.     DR Multiuser DOS hooks this interrupt for cursor shape control and to
  241.       control whether Ctrl-Alt-Del reboots the current session or the
  242.       entire system
  243. SeeAlso: INT 05,INT 0B"HP 95LX",INT 15/AH=4Fh,INT 15/AH=85h,INT 16,INT 1B
  244. SeeAlso: INT 2F/AX=A901h,INT 51"DESQview",INT 59"DoubleDOS",INT 79"GO32"
  245.  
  246. Values for scan code:
  247.  01h    Esc         31h    N        
  248.  02h    1 !         32h    M        
  249.  03h    2 @         33h    , <         63h    F16
  250.  04h    3 #         34h    . >         64h    F17
  251.  05h    4 $         35h    / ?         65h    F18
  252.  06h    5 %         36h    Right Shift     66h    F19
  253.  07h    6 ^         37h    Grey*         67h    F20
  254.  08h    7 &         38h    Alt         68h    F21
  255.  09h    8 *         39h    SpaceBar     69h    F22
  256.  0Ah    9 (         3Ah    CapsLock     6Ah    F23
  257.  0Bh    0 )         3Bh    F1         6Bh    F24
  258.  0Ch    - _         3Ch    F2         6Ch    --
  259.  0Dh    = +         3Dh    F3         6Dh    EraseEOF
  260.  0Eh    Backspace     3Eh    F4        
  261.  0Fh    Tab         3Fh    F5         6Fh    Copy/Play
  262.  10h    Q         40h    F6        
  263.  11h    W         41h    F7        
  264.  12h    E         42h    F8         72h    CrSel
  265.  13h    R         43h    F9        
  266.  14h    T         44h    F10         74h    ExSel
  267.  15h    Y         45h    NumLock         75h    --
  268.  16h    U         46h    ScrollLock     76h    Clear
  269.  17h    I         47h    Home
  270.  18h    O         48h    UpArrow
  271.  19h    P         49h    PgUp
  272.  1Ah    [ {         4Ah    Grey-
  273.  1Bh    ] }         4Bh    LeftArrow
  274.  1Ch    Enter         4Ch    Keypad 5                     
  275.  1Dh    Ctrl         4Dh    RightArrow                     
  276.  1Eh    A         4Eh    Grey+                         
  277.  1Fh    S         4Fh    End                         
  278.  20h    D         50h    DownArrow     E0h    prefix code
  279.  21h    F         51h    PgDn         E1h    prefix code
  280.  22h    G         52h    Ins         FAh    ACK
  281.  23h    H         53h    Del         FEh    RESEND
  282.  24h    J         54h    SysRq         FFh    kbd error/buffer full
  283.  25h    K
  284.  26h    L                    
  285.  27h    ; :         57h    F11
  286.  28h    ' "         58h    F12        
  287.  29h    ` ~        
  288.  2Ah    Left Shift     5Ah    PA1
  289.  2Bh    \ |         5Bh    F13
  290.  2Ch    Z         5Ch    F14
  291.  2Dh    X         5Dh    F15
  292.  2Eh    C        
  293.  2Fh    V        
  294.  30h    B        
  295. Note:    scan codes 57h-E1h are only available on the extended (101/102-key)
  296.       keyboard and Host Connected (122-key) keyboard; scan codes 5Ah-76h
  297.       are only available on the 122-key keyboard
  298. ----------09---------------------------------
  299. INT 09 - CPU-generated (80286,80386) - PROCESSOR EXTENSION PROTECTION ERROR
  300. Desc:    called if the coprocessor attempts to access memory outside a segment
  301.       boundary; it may occur at an arbitrary time after the coprocessor
  302.       instruction was issued
  303. Note:    until the condition is cleared or the coprocessor is reset, the only
  304.       coprocessor instruction which may be used is FNINIT; WAIT or other
  305.       coprocessor instructions will cause a deadlock because the
  306.       coprocessor is still busy waiting for data
  307. SeeAlso: INT 07"CPU"
  308. ----------09---------------------------------
  309. INT 09 P - internal hardware - RESERVED BY Intel (80486)
  310. Note:    this exception has been moved to INT 0D
  311. SeeAlso: INT 09"MATH",INT 0D
  312. ----------0A---------------------------------
  313. INT 0A - IRQ2 - LPT2 (PC), VERTICAL RETRACE INTERRUPT (EGA,VGA)
  314. Notes:    the TOPS and PCnet adapters use this interrupt request line by default
  315.     DOS 3.2 revectors IRQ2 to a stack-switching routine
  316.     on ATs and above, the physical data line for IRQ2 is labeled IRQ9 and
  317.       connects to the slave 8259.  The BIOS redirects the interrupt for
  318.       IRQ9 back here.
  319.     under DESQview, only the INT 15h vector and BASIC segment address (the
  320.       word at 0000h:0510h) may be assumed to be valid for the handler's
  321.       process
  322.     many VGA boards do not implement the vertical retrace interrupt,
  323.       including the IBM VGA Adapter where the traces are either cut or
  324.       removed
  325. SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71,INT 7A"GO32"
  326. ----------0A---------------------------------
  327. INT 0A - IRQ2 - Tandy 1000-series HARD DISK
  328. Note:    may be masked by setting bit 2 on I/O port 21h
  329. SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71
  330. ----------0A---------------------------------
  331. INT 0A - IRQ2 - ROLAND MPU MIDI INTERFACE
  332. Note:    newer Roland cards and MIDI interfaces by other manufacturers use
  333.       a jumper-selectable IRQ, but software and hardware generally defaults
  334.       to IRQ2
  335. SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71,INT 7A"GO32"
  336. ----------0A---------------------------------
  337. INT 0A P - CPU-generated (80286+) - INVALID TASK STATE SEGMENT
  338. Desc:    automatically called during a task switch if the new TSS specified by
  339.       the task gate is invalid for any of the following reasons:
  340.         TSS limit is less than 43 (80286) or 103 (80386/80486)
  341.         LDT selector invalid or segment not present
  342.         null SS selector, or SS selector outside LDT/GDT limit
  343.         stack segment is read-only
  344.         stack segment DPL differs from new CPL, or RPL <> CPL
  345.         CS selector is outside LDT/GDT limit or not code
  346.         non-conforming code segment's DPL differs from CPL
  347.         conforming code segment's DPL > CPL
  348.         DS/ES selectors outside LDT/GDT limit or not readable segments
  349. Note:    the handler must use a task gate in order to have a valid TSS under
  350.       which to execute; it must also reset the busy bit in the new TSS
  351. SeeAlso: INT 0B"CPU"
  352. ----------0B---------------------------------
  353. INT 0B - IRQ3 - SERIAL COMMUNICATIONS (COM2)
  354. Notes:    the TOPS and PCnet adapters use this interrupt request line as an
  355.       alternate
  356.     on PS/2's, COM2 through COM8 share this interrupt; on many PC's, COM4
  357.       shares this interrupt
  358.     may be masked by setting bit 3 on I/O port 21h
  359. SeeAlso: INT 0C"COM1",INT 53"DESQview",INT 5B"DoubleDOS",INT 7B"GO32"
  360. ----------0B---------------------------------
  361. INT 0B P - CPU-generated (80286+) - SEGMENT NOT PRESENT
  362. Desc:    generated when loading a segment register if the segment descriptor
  363.       indicates that the segment is not currently in memory, unless the
  364.       segment is an LDT (see INT 0A"CPU") or stack segment (see
  365.       INT 0C"CPU") needed by a task switch
  366. Note:    may be used to implement virtual memory by loading in segments as they
  367.       are accessed, clearing the "not present" bit after loading
  368. SeeAlso: INT 0A"CPU",INT 0E"hardware"
  369. ----------0B---------------------------------
  370. INT 0B - HP 95LX - LOW-LEVEL KEYBOARD HANDLER
  371. Desc:    this is the lowest-level keyboard handler on an HP 95LX palmtop
  372. Note:    debounces key, places the keycode in I/O register 60h, and calls INT 09
  373. SeeAlso: INT 09,INT 0D"HP 95LX",INT 15/AX=4DD4h
  374. ----------0C---------------------------------
  375. INT 0C - IRQ4 - SERIAL COMMUNICATIONS (COM1)
  376. Notes:    on many PC's, COM3 shares this interrupt
  377.     may be masked by setting bit 4 on I/O port 21h
  378.     this vector is modified but not restored by Direct Access v4.0, and
  379.       may be left dangling by other programs written with the same version
  380.       of compiled BASIC
  381. SeeAlso: INT 0B"COM2",INT 54"DESQview",INT 5C"DoubleDOS",INT 7C"GO32"
  382. ----------0C---------------------------------
  383. INT 0C - CPU-generated (80286+) - STACK FAULT
  384. Desc:    this interrupt is generated in protected mode on a stack overflow or
  385.       underflow, or if an inter-level transition or task switch references
  386.       a stack segment marked "not present"; it is generated in real mode
  387.       on accessing a word operand at SS:FFFFh
  388. Note:    the 80286 will shut down in real mode if SP=1 before a push.  On the
  389.       PC AT and compatibles, external circuitry generates a reset on
  390.       shutdown.
  391. SeeAlso: INT 0B"CPU",INT 0D"CPU"
  392. ----------0C---------------------------------
  393. INT 0C - IBM SYSTEM 36/38 WORKSTATION EMULATION - API POINTER
  394.    Call offset 100h in the interrupt handler's segment with
  395.     AH = function
  396.         03h update screen
  397.         05h select next session
  398.         AL = session number (00h-03h)
  399.         Return: AL = session type code
  400.                 00h not active
  401.                 01h display session
  402.                 02h printer session
  403.                 FEh invalid session number
  404.             DS = requested session's data segment (0 if not active)
  405. Return: ???
  406.  
  407. Format of emulator's data area (offset from interrupt handler's segment):
  408. Offset    Size    Description
  409. 13Eh    BYTE    bit flags for status line indicators turned on since this byte
  410.         last zerod
  411. 13Fh    BYTE    bit flags for status line indicators turned off since this
  412.         byte last set to FFh
  413. 140h    WORD    offset of EBCDIC to ASCII translation
  414. 146h    WORD    offset of EBCDIC screen buffer
  415. 148h    WORD    offset of EC (engineering change) level signature
  416. 150h    BYTE    "KEYI"
  417. 151h    BYTE    5250 key scan code to be sent to remote
  418. 15Bh    BYTE    "SYSAV"
  419. 15Dh    BYTE    5250 cursor column
  420. 15Eh    BYTE    5250 cursor row
  421. 167h    BYTE    "DVCTAD"
  422. 178h    BYTE    "FLAGS"
  423. 184h    BYTE    "SESSNOAD"
  424. 193h    BYTE    "STNAD"
  425. 198h    BYTE    "NSDS"
  426. ----------0D---------------------------------
  427. INT 0D - IRQ5 - FIXED DISK (PC,XT), LPT2 (AT), reserved (PS/2)
  428. Notes:    under DESQview, only the INT 15h vector and BASIC segment address (the
  429.       word at 0000h:0510h) may be assumed to be valid for the handler's
  430.       process
  431.     may be masked by setting bit 5 on I/O port 21h
  432. SeeAlso: INT 0E"IRQ6",INT 0F"IRQ7",INT 55"DESQview",INT 5D"DoubleDOS"
  433. SeeAlso: INT 7D"GO32"
  434. ----------0D---------------------------------
  435. INT 0D - IRQ5 - Tandy 1000 60 Hz RAM REFRESH
  436. Desc:    used to ensure that the dynamic RAM retains its contents
  437. SeeAlso: INT 55
  438. ----------0D---------------------------------
  439. INT 0D - HP 95LX - INFRARED INTERRUPT
  440. Desc:    this interrupt is used to perform communications over the infrared
  441.       data link
  442. SeeAlso: INT 0B"HP 95LX",INT 0E"HP 95LX",INT 15/AX=4DD4h
  443. ----------0D---------------------------------
  444. INT 0D - CPU-generated (80286+) - GENERAL PROTECTION VIOLATION
  445. Desc:    the CPU generates this interrupt when it detects a protection violation
  446.       which does not fit under any other category having a separate
  447.       interrupt
  448. Notes:    called in real mode when
  449.         an instruction accesses a word operand located at offset FFFFh in
  450.           segment CS, DS, ES, FG, or GS
  451.         a PUSH MEM or POP MEM instruction contains an invalid bit encoding
  452.           in the second byte
  453.         an instruction exceeds the maximum length allowed (10 bytes for
  454.           80286, 15 bytes for 80386/80486)
  455.         an instruction wraps from offset FFFFh to offset 0000h
  456.     called in protected mode on protection violations not covered by INT 06
  457.       through INT 0C, including
  458.         segment limit violations
  459.         write to read-only segments
  460.         accesses using null DS or ES selectors
  461.         accesses to segments with privilege greater than CPL
  462.         wrong descriptor type
  463.     called on 80486 protected-mode floating-point protection fault
  464. SeeAlso: INT 09"80486",INT 0C"STACK"
  465. ----------0E---------------------------------
  466. INT 0E - IRQ6 - DISKETTE CONTROLLER
  467. Desc:    this interrupt is generated by the floppy disk controller on
  468.       completion of an operation
  469. Notes:    default handler is at F000h:EF57h in IBM PC and 100%-compatible BIOSes
  470.     may be masked by setting bit 6 on I/O port 21h
  471. SeeAlso: INT 0D"IRQ5",INT 56"DESQview",INT 5E"DoubleDOS",INT 7E"GO32"
  472. ----------0E---------------------------------
  473. INT 0E - CPU-generated (80386+ native mode) - PAGE FAULT
  474. Desc:    this interrupt is generated in protected and virtual-86 modes on
  475.       attempting to access a 4K memory page whose page table entry has
  476.       the "present" bit cleared
  477. Note:    used to implement virtual memory
  478. SeeAlso: INT 0B"hardware"
  479. ----------0E---------------------------------
  480. INT 0E - HP 95LX - EXTERNAL CARD INTERRUPT
  481. SeeAlso: INT 0D"HP 95LX",INT 0F"HP 95LX",INT 15/AX=4DD4h
  482. ----------0F---------------------------------
  483. INT 0F - IRQ7 - PARALLEL PRINTER
  484. Desc:    this interrupt is generated by the LPT1 printer adapter when the
  485.       printer becomes ready
  486. Notes:    most printer adapters do not reliably generate this interrupt
  487.     the 8259 interrupt controller generates an interrupt corresponding to
  488.       IRQ7 when an error condition occurs
  489. SeeAlso: INT 0D"LPT2",INT 57"DESQview",INT 5F"DoubleDOS",INT 7F"GO32"
  490. ----------0F---------------------------------
  491. INT 0F - HP 95LX - REAL-TIME CLOCK
  492. SeeAlso: INT 0E"HP 95LX",INT 15/AX=4DD4h,INT 70
  493. ----------10---------------------------------
  494. INT 10 - CPU-generated (80286+) - COPROCESSOR ERROR
  495. Desc:    this interrupt is generated by the CPU when the -ERROR pin is asserted
  496.       by the coprocessor
  497. Note:    AT's and clones usually wire the coprocessor to use IRQ13, but not all
  498.       get it right
  499. SeeAlso: INT 09"hardware",INT 75
  500. ----------1000-------------------------------
  501. INT 10 - VIDEO - SET VIDEO MODE
  502.     AH = 00h
  503.     AL = mode (see below)
  504. Return: AL = video mode flag (Phoenix BIOS)
  505.         20h mode > 7
  506.         30h modes 0-5 and 7
  507.         3Fh mode 6
  508.     AL = CRT controller mode byte (Phoenix 386 BIOS v1.10)
  509. Notes:    IBM standard modes do not clear the screen if the high bit of AL is set
  510.       (EGA or higher only)
  511.     the Tseng ET4000 chipset is used by the Orchid Prodesigner II, Diamond
  512.       SpeedSTAR VGA, Groundhog Graphics Shadow VGA, Boca Super X VGA,
  513.       Everex EV-673
  514.     the installation check for Ahead adapters is the signature "AHEAD" at
  515.       C000h:0025h
  516.     the installation check for Paradise adapters is the signature "VGA=" at
  517.       C000h:007Dh
  518.     the installation check for Oak Tech OTI-037/057/067/077 chipsets is the
  519.       signature "OAK VGA" at C000h:0008h
  520.     the installation check for ATI adapters is the signature "761295520" at
  521.       C000h:0031h; the byte at C000h:0043h indicates the chipset revision:
  522.         31h for 18800
  523.         32h for 18800-1
  524.         33h for 18800-2
  525.         34h for 18800-4
  526.         35h for 18800-5
  527.       the two bytes at C000h:0040h indicate the adapter type
  528.         "22" EGA Wonder
  529.         "31" VGA Wonder
  530.         "32" EGA Wonder800+
  531.       the byte at C000h:0042h contains feature flags
  532.         bit 1: mouse port present
  533.         bit 4: programmable video clock
  534.       the byte at C000h:0044h contains additional feature flags if chipset
  535.       byte > 30h
  536.         bit 0: 70 Hz non-interlaced display
  537.         bit 1: Korean (double-byte) characters
  538.         bit 2: 45 MHz memory clock rather than 40 MHz
  539.         bit 3: zero wait states
  540.         bit 4: paged ROMs
  541.         bit 6: no 8514/A monitor support
  542.         bit 7: HiColor DAC
  543.     the installation check for Genoa video adapters is the signature
  544.       77h XXh 99h 66h at C000h:0037h, where XXh is
  545.         00h for Genoa 6200/6300
  546.         11h for Genoa 6400/6600
  547.         22h for Genoa 6100
  548.         33h for Genoa 5100/5200
  549.         55h for Genoa 5300/5400
  550.       for SuperEGA BIOS v2.41+, C000h:0057h contains the product level
  551.       for SuperEGA BIOS v3.0+, C000h:0070h contains the signature
  552.       "EXTMODE", indicating support for extended modes
  553. SeeAlso: AX=0070h,AX=007Eh,AX=10E0h,AX=10F0h,AH=40h,AX=6F05h,AH=FFh"GO32"
  554. SeeAlso: INT 33/AX=0028h,INT 5F/AH=00h,INT 62/AX=0001h
  555.  
  556. Values for video mode:
  557.       text/ text pixel     pixel    colors    disply    scrn  system
  558.       grph resol  box    resoltn        pages    addr
  559.  00h = T   40x25  8x8        16gray       8    B800 CGA,PCjr
  560.      = T   40x25  8x14        16gray       8    B800 EGA
  561.      = T   40x25  8x16          16       8    B800 MCGA
  562.      = T   40x25  9x16          16       8    B800 VGA
  563.  01h = T   40x25  8x8          16       8    B800 CGA,PCjr
  564.      = T   40x25  8x14          16       8    B800 EGA
  565.      = T   40x25  8x16          16       8    B800 MCGA
  566.      = T   40x25  9x16          16       8    B800 VGA
  567.  02h = T   80x25  8x8        16gray       4    B800 CGA,PCjr
  568.      = T   80x25  8x14        16gray       4    B800 EGA
  569.      = T   80x25  8x16          16       4    B800 MCGA
  570.      = T   80x25  9x16          16       4    B800 VGA
  571.  03h = T   80x25  8x8          16       4    B800 CGA,PCjr
  572.      = T   80x25  8x14          16       4    B800 EGA
  573.      = T   80x25  8x16          16       4    B800 MCGA
  574.      = T   80x25  9x16          16       4    B800 VGA
  575.  04h = G   40x25  8x8    320x200       4        B800 CGA,PCjr,EGA,MCGA,VGA
  576.  05h = G   40x25  8x8    320x200     4gray        B800 CGA,PCjr,EGA
  577.      = G   40x25  8x8    320x200       4        B800 MCGA,VGA
  578.  06h = G   80x25  8x8    640x200       2        B800 CGA,PCjr,EGA,MCGA,VGA
  579.  07h = T   80x25  9x14         mono      var    B000 MDA,Hercules,EGA
  580.      = T   80x25  9x16         mono        B000 VGA
  581.  08h = T  132x25  8x8          16        B800 ATI EGA/VGA Wonder [1]
  582.      = T  132x25  8x8         mono        B000 ATI EGA/VGA Wonder [1]
  583.      = G   20x25  8x8    160x200      16             PCjr, Tandy 1000
  584.      = G   90x43  8x8    720x352     mono        B000 Hercules + MSHERC.COM
  585.  09h = G   40x25  8x8    320x200      16             PCjr
  586.  0Ah = G   80x25  8x8    640x200       4             PCjr, Tandy 1000
  587.  0Bh =     reserved (used internally by EGA BIOS)
  588.      = G        640x200      16             Tandy 1000 SL/TL
  589.  0Ch =     reserved (used internally by EGA BIOS)
  590.  0Dh = G   40x25  8x8    320x200      16       8    A000 EGA,VGA
  591.  0Eh = G   80x25  8x8    640x200      16       4    A000 EGA,VGA
  592.  0Fh = G   80x25  8x14    640x350     mono       2    A000 EGA,VGA
  593.  10h = G   80x25  8x14    640x350       4       2    A000 64k EGA
  594.      = G        640x350      16        A000 256k EGA,VGA
  595.  11h = G   80x30  8x16    640x480     mono        A000 VGA,MCGA,ATI EGA,ATI VIP
  596.  12h = G   80x30  8x16    640x480 16/256k        A000 VGA,ATI VIP
  597.      = G   80x30  8x16    640x480     16/64        A000 ATI EGA Wonder
  598.      = G        640x480      16             UltraVision+256K EGA
  599.  13h = G   40x25  8x8    320x200 256/256k    A000 VGA,MCGA,ATI VIP
  600.  14h = T  132x25  Nx16          16             XGA, IBM Enhanced VGA [2]
  601.      = G   80x25  8x8    640x200                 Lava Chrome II EGA
  602.      = G        640x400      16             Tecmar VGA/AD
  603.  15h = G   80x25  8x14    640x350                 Lava Chrome II EGA
  604.  16h = G   80x25  8x14    640x350                 Lava Chrome II EGA
  605.      = G        800x600      16             Tecmar VGA/AD
  606.  17h = T  132x25                     Tecmar VGA/AD
  607.      = G   80x34  8x14    640x480                 Lava Chrome II EGA
  608.  18h = T  132x25         mono        B000 Cirrus 5320 chipset
  609.      = T  132x44  8x8         mono             Tseng Labs EVA
  610.      = T  132x44  8x8         16/256       2    B000 Tseng ET4000 chipset
  611.      = G   80x34  8x14    640x480                 Lava Chrome II EGA
  612.      = G           1024x768      16             Tecmar VGA/AD
  613.  19h = T  132x25  8x14         mono             Tseng Labs EVA
  614.      = T  132x25  8x14         16/256       4    B000 Tseng ET4000 chipset
  615.      = T  132x34         mono        B000 Cirrus 5320 chipset
  616.  1Ah = T  132x28  8x13         mono             Tseng Labs EVA
  617.      = T  132x28  8x13         16/256       4    B000 Tseng ET4000 chipset
  618.      = T  132x44         mono        B000 Cirrus 5320 chipset
  619.      = G        640x350     256             Tecmar VGA/AD
  620.  1Bh = G        640x400     256             Tecmar VGA/AD
  621.  1Ch = T  132x25                     Cirrus 5320 chipset
  622.      = G        640x480     256             Tecmar VGA/AD
  623.  1Dh = T  132x43                     Cirrus 5320 chipset
  624.      = G        800x600     256             Tecmar VGA/AD
  625.  1Eh = T  132x44                     Cirrus 5320 chipset
  626.  1Fh = G        800x600      16             Realtek RTVGA
  627.  20h = G        240x128            B000 HP 95LX
  628.  21h = T  132x60          16       2    B800 Tseng ET4000 chipset
  629.      = T  132x44  9x9  1188x396     16/256k    B800 WD90C
  630.      = G   80x43  8x8    720x348     mono        B000 DESQview 2.x+Hercules [3]
  631.      = G           1024x768      16             Realtek RTVGA
  632.  22h = T  132x44  8x8                     Tseng Labs EVA
  633.      = T  132x44  8x8         16/256       2    B800 Tseng ET4000 chipset
  634.      = T  132x44  8x8                     Ahead Systems EGA2001
  635.      = T  132x44  8x8          16       2    B800 Ahead B
  636.      = T  132x44          16             Orchid Prodesigner VGA
  637.      = T  132x43                     Allstar Peacock (VGA)
  638.      = G   80x43  8x8    720x348     mono        B800 DESQview 2.x+Hercules [3]
  639.  23h = T  132x25  6x14                     Tseng Labs EVA
  640.      = T  132x25  8x14         16/256       4    B800 Tseng ET4000 chipset
  641.      = T  132x25  8x14                     Ahead Systems EGA2001
  642.      = T  132x25  8x14          16       4    B800 Ahead B
  643.      = T  132x25  8x8          16        B800 ATI EGA Wonder,ATI VIP
  644.      = T  132x25                     Cirrus 5320 chipset
  645.      = T  132x28                     Allstar Peacock (VGA)
  646.      = T  132x28          16             Orchid Prodesigner VGA
  647.  24h = T  132x25                     Allstar Peacock (VGA)
  648.      = T  132x25          16             Orchid Prodesigner VGA
  649.      = T  132x28  6x13                     Tseng Labs EVA
  650.      = T  132x28  8x13         16/256       4    B800 Tseng ET4000 chipset
  651.      = T  132x28  8x12          16       1    B800 Ahead B
  652.      = T  132x28                     Cirrus 5320 chipset
  653.  25h = G   80x60  8x8    640x480                 Tseng Labs EVA
  654.      = G   80x60  8x8    640x480     16/256       1    A000 Tseng ET4000 chipset
  655.      = G        640x480      16             VEGA VGA
  656.      = G   80x60  8x8    640x480      16        A000 Orchid Prodesigner VGA
  657.      = G   80x60  8x8    640x480      16       1    A000 Ahead B (same as 26h)
  658.      = G        640x480      16             NEC GB-1
  659.      = G        640x480      16             Cirrus 5320 chipset
  660.      = G        640x400     256             Realtek RTVGA
  661.  26h = T   80x60  8x8                     Tseng Labs EVA
  662.      = T   80x60  8x8         16/256       2    B800 Tseng ET4000 chipset
  663.      = T   80x60                     Allstar Peacock (VGA)
  664.      = T   80x60          16             Orchid ProDesigner VGA
  665.      = G   80x60  8x8    640x480                 Ahead Systems EGA2001
  666.      = G   80x60  8x8    640x480      16       1    A000 Ahead B (same as 25h)
  667.      = G        640x480     256             Realtek RTVGA
  668.  27h = T  132x25  8x8         mono        B000 ATI EGA Wonder,ATI VIP
  669.      = G        720x512      16             VEGA VGA
  670.      = G        720x512      16             Genoa
  671.      = G        800x600     256             Realtek RTVGA
  672.  28h = T  ???x???                     VEGA VGA
  673.      = G           1024x768     256             Realtek RTVGA (1meg)
  674.  29h = G        800x600      16             VEGA VGA
  675.      = G  100x37  8x16    800x600      16        A000 Orchid
  676.      = G        800x600      16        A000 STB,Genoa,Sigma
  677.      = G        800x600      16             Allstar Peacock (VGA)
  678.      = G  100x37  8x16    800x600     16/256       1    A000 Tseng ET3000/4000 chipset
  679.      = G        800x600     ???             EIZO MDB10
  680.      = G        800x600      16             Cirrus 5320 chipset
  681.  2Ah = T  100x40                     Allstar Peacock (VGA)
  682.      = T  100x40  8x16          16             Orchid Prodesigner VGA
  683.      = T  100x40  8x15        16/256       4    B800 Tseng ET4000 chipset
  684.      = G           1280x1024 256             Realtek RTVGA
  685.  2Dh = G        640x350     256             VEGA VGA
  686.      = G        640x350 256/256k    A000 Orchid, Genoa, STB
  687.      = G   80x25  8x14    640x350 256/256k   1    A000 Tseng ET3000/4000 chipset
  688.      = G        640x350     256             Cirrus 5320 chipset
  689.  2Eh = G        640x480     256             VEGA VGA
  690.      = G   80x30  8x16    640x480 256/256k    A000 Orchid
  691.      = G        640x480 256/256k    A000 STB,Genoa,Sigma
  692.      = G   80x30  8x16    640x480 256/256k   1    A000 Tseng ET3000/4000 chipset
  693.  2Fh = T  160x50  8x8  1280x400      16       4    B800 Ahead B (Wizard/3270)
  694.      = G        720x512     256             VEGA VGA
  695.      = G        720x512     256             Genoa
  696.      = G   80x25  8x16    640x400 256/256k   1    A000 Tseng ET4000 chipset
  697.  30h = G        800x600     256             VEGA VGA
  698.      = G  100x37  8x16    800x600 256/256k    A000 Orchid 
  699.      = G        800x600 256/256k    A000 STB,Genoa,Sigma
  700.      = G        720x350       2             3270 PC
  701.      = G        800x600     256             Cardinal
  702.      = G        ???x???            B800 AT&T 6300
  703.      = G  100x37  8x16    800x600 256/256k   1    A000 Tseng ET3000/4000 chipset
  704.  32h = T   80x34  8x10          16       4    B800 Ahead B (Wizard/3270)
  705.  33h = T  132x44  8x8          16        B800 ATI EGA Wonder,ATI VIP
  706.      = T   80x34  8x8          16       4    B800 Ahead B (Wizard/3270)
  707.  34h = T   80x66  8x8          16       4    B800 Ahead B (Wizard/3270)
  708.  36h = G        960x720      16             VEGA VGA
  709.      = G        960x720      16             STB
  710.      = G        960x720      16             Tseng ET3000 only
  711.  37h = T  132x44  8x8         mono        B800 ATI EGA Wonder,ATI VIP
  712.      = G           1024x768      16             VEGA VGA
  713.      = G  128x48  8x16 1024x768      16        A000 Orchid
  714.      = G           1024x768      16        A000 STB,Genoa,Sigma
  715.      = G           1024x768      16             Definicon
  716.      = G  128x48  8x16 1024x768      16       1    A000 Tseng ET3000/4000
  717.  38h = G           1024x768     256             STB VGA/EM-16 Plus (1MB)
  718.      = G  128x48  8x16 1024x768 256/256k   1    A000 Tseng ET4000 chipset
  719.      = G           1024x768     256             Orchid ProDesigner II
  720.  3Dh = G           1280x1024  16             Definicon
  721.      = G  128x64  8x16 1280x1024  16       1    A000 Tseng ET4000 v3.00 [6,8]
  722.  3Eh = G           1280x961      16             Definicon
  723.  40h = T   80x43                     VEGA VGA, Tecmar VGA/AD
  724.      = T   80x43                     Video7 V-RAM VGA
  725.      = T   80x43                     Tatung VGA
  726.      = T  100x30          16             MORSE VGA
  727.      = T  100x30                     Cirrus 510/520 chipset
  728.      = T   80x25    720x350     mono             Genoa SuperEGA BIOS 3.0+
  729.      = G   80x25  8x16    640x400       2       1    B800 AT&T 6300, AT&T VDC600
  730.      = G   80x25  8x16    640x400       2       1    B800 Compaq Portable
  731.  41h = T  132x25                     VEGA VGA
  732.      = T  132x25                     Tatung VGA
  733.      = T  132x25                     Video7 V-RAM VGA
  734.      = T  100x50          16             MORSE VGA
  735.      = T  100x50                     Cirrus 510/520 chipset
  736.      = T   80x34  9x14    720x476     16/256k    B800 WD90C
  737.      = G        640x200      16       1         AT&T 6300
  738.      = G   80x25    720x348     mono        B000 Genoa SuperEGA BIOS 3.0+
  739.  42h = T  132x43                     VEGA VGA
  740.      = T  132x43                     Tatung VGA
  741.      = T  132x43                     Video7 V-RAM VGA
  742.      = T   80x34  9x10           4       4    B800 Ahead B (Wizard/3270)
  743.      = T  100x60          16             MORSE VGA
  744.      = T  100x60                     Cirrus 510/520 chipset
  745.      = G   80x25  8x16    640x400      16             AT&T 6300, AT&T VDC600
  746.      = G   80x25    720x348     mono        B800 Genoa SuperEGA BIOS 3.0+
  747.  43h = T   80x60                     VEGA VGA
  748.      = T   80x60                     Tatung VGA
  749.      = T   80x60                     Video7 V-RAM VGA
  750.      = T   80x45  9x8           4       4    B800 Ahead B (Wizard/3270)
  751.      = T  100x75          16             MORSE VGA
  752.      = T   80x29    720x348     mono             Genoa SuperEGA BIOS 3.0+
  753.      = G         640x200 of 640x400 viewport     AT&T 6300 (unsupported)
  754.  44h =     disable VDC and DEB output             AT&T 6300
  755.      = T  100x60                     VEGA VGA
  756.      = T  100x60                     Tatung VGA
  757.      = T  100x60                     Video7 V-RAM VGA
  758.      = T   80x32    720x352     mono             Genoa SuperEGA BIOS 3.0+
  759.  45h = T  132x28                     Tatung VGA
  760.      = T  132x28                     Video7 V-RAM VGA
  761.      = T   80x44    720x352     mono             Genoa SuperEGA BIOS 3.0+
  762.  46h = T  132x25  8x14         mono             Genoa 6400
  763.      = T  132x25  9x14         mono             Genoa SuperEGA BIOS 3.0+
  764.      = G  100x40  8x15    800x600       2             AT&T VDC600
  765.  47h = T  132x29  8x12         mono             Genoa 6400
  766.      = T  132x29  9x12         mono             Genoa SuperEGA BIOS 3.0+
  767.      = T  132x28  9x16 1188x448     16/256k    B800 WD90C
  768.      = G  100x37  8x16    800x600      16             AT&T VDC600
  769.  48h = T  132x32  8x12         mono             Genoa 6400
  770.      = T  132x32  9x11         mono             Genoa SuperEGA BIOS 3.0+
  771.      = G   80x50  8x8    640x400       2        B800 AT&T 6300, AT&T VDC600
  772.  49h = T  132x44  8x8         mono             Genoa 6400
  773.      = T  132x44  9x8         mono             Genoa SuperEGA BIOS 3.0+
  774.      = G   80x30  8x16    640x480                 Lava Chrome II EGA
  775.  4Dh = T  120x25                     VEGA VGA
  776.  4Eh = T  120x43                     VEGA VGA
  777.      = T   80x60  8x8         16/256k    B800 Oak OTI-067/OTI-077 [7]
  778.  4Fh = T  132x25                     VEGA VGA
  779.      = T  132x60                     some Oak Tech VGA [7]
  780.  50h = T   80x30  8x16         16/256k    B800 Trident TVGA 8800/8900
  781.      = T   80x34                     Lava Chrome II EGA
  782.      = T   80x43         mono             VEGA VGA
  783.      = T  132x25  9x14         mono             Ahead Systems EGA2001
  784.      = T  132x25  9x14           4       4    B800 Ahead B
  785.      = T  132x25  8x14          16       8    B800 OAK Technologies VGA-16
  786.      = T  132x25  8x14         16/256k    B800 Oak OTI-037/067/077 [7]
  787.      = T  132x30          16             MORSE VGA
  788.      = T  132x30                     Cirrus 510/520 chipset
  789.      = G   80x30  8x16    640x480      16             Paradise EGA-480
  790.      = G   80x30  8x16    640x480      16             NEL Electronics BIOS
  791.      = G        640x480     mono???         Taxan 565 EGA
  792.      = G   40x25  8x8    320x200                 Genoa SuperEGA BIOS 3.0+
  793.  51h = T   80x30  8x16                     Paradise EGA-480
  794.      = T   80x30  9x16                     NEL Electronics BIOS
  795.      = T   80x30                     Lava Chrome II EGA
  796.      = T   80x43  8x11         16/256k    B800 Trident TVGA 8800/8900
  797.      = T  132x25         mono             VEGA VGA
  798.      = T  132x43  8x8          16       5    B800 OAK Technologies VGA-16
  799.      = T  132x43  8x8        16/256k        B800 Oak OTI-037/067/077
  800.      = T  132x28  9x12           4       4    B800 Ahead B
  801.      = T  132x50          16             MORSE VGA
  802.      = T  132x50                     Cirrus 510/520 chipset
  803.      = G   80x34  8x14    640x480      16             ATI EGA Wonder
  804.      = G   80x25  8x8    640x200                 Genoa SuperEGA BIOS 3.0+
  805.  52h = T   80x60                     Lava Chrome II EGA
  806.      = T   80x60  8x8         16/256k    B800 Trident TVGA 8800/8900
  807.      = T  132x43         mono             VEGA VGA
  808.      = T  132x44  9x8         mono             Ahead Systems EGA2001
  809.      = T  132x44  9x8           4       2    B800 Ahead B
  810.      = T  132x60          16             MORSE VGA
  811.      = T  132x60                     Cirrus 510/520 chipset
  812.      = G   94x29  8x14    752x410      16             ATI EGA Wonder
  813.      = G  100x75  8x8    800x600      16       1    A000 OAK Technologies VGA-16
  814.      = G  100x75  8x8    800x600      16        A000 Oak OTI-037 chipset [7]
  815.      = G  100x37  8x16    800x600      16        A000 Oak OTI-067/077 chips [7]
  816.      = G  128x30  8x16 1024x480      16             NEL Electronics BIOS
  817.  53h = T   80x25  8x16                     NEL Electronics BIOS
  818.      = T   80x60          16             MORSE VGA
  819.      = T   80x60                     Cirrus 510/520 chipset
  820.      = T  132x25  8x14         16/256k    B800 Trident TVGA 8800/8900
  821.      = T  132x43                     Lava Chrome II EGA
  822.      = G        640x480     256             Oak VGA
  823.      = G   80x30  8x16    640x480     256        A000 Oak OTI-067/OTI-077 [7]
  824.      = G  100x40  8x14    800x560      16             ATI EGA Wonder,ATI VIP
  825.      = G                         AX PC
  826.  54h = T  132x25                     Lava Chrome II EGA
  827.      = T  132x30  8x16         16/256k    B800 Trident TVGA 8800/8900
  828.      = T  132x43  8x8                     Paradise EGA-480
  829.      = T  132x43  8x8                     NEL Electronics BIOS
  830.      = T  132x43  7x9         16/256k    B800 Paradise VGA
  831.      = T  132x43  8x9         16/256k    B800 Paradise VGA on multisync
  832.      = T  132x43                     Taxan 565 EGA
  833.      = T  132x43                     AST VGA Plus
  834.      = T  132x43                     Hewlett-Packard D1180A
  835.      = T  132x43  7x9          16             AT&T VDC600
  836.      = T  132x50  8x8          16        A000 NCR 77C22 [9]
  837.      = T  132x43  9x9  1188x387     16/256k    B800 WD90C
  838.      = G  100x42  8x14    800x600      16        A000 ATI EGA Wonder, VGA Wonder
  839.      = G  100x42  8x14    800x600      16        A000 ATI Ultra 8514A, ATI XL
  840.      = G        800x600     256        A000 Oak VGA    
  841.      = G  100x37  8x16    800x600     256        A000 Oak OTI-067/077 chips [7]
  842.  55h = T   80x66  8x8         16/256k    A000 ATI VIP
  843.      = T  132x25  8x14                     Paradise EGA-480
  844.      = T  132x25  8x14                     NEL Electronics BIOS
  845.      = T  132x25  7x16         16/256k    B800 Paradise VGA
  846.      = T  132x25  8x16         16/256k    B800 Paradise VGA on multisync
  847.      = T  132x25                     Taxan 565 EGA
  848.      = T  132x25                     AST VGA Plus
  849.      = T  132x25                     Hewlett-Packard D1180A
  850.      = T  132x25  7x16          16             AT&T VDC600
  851.      = T  132x25  8x16          16        A000 NCR 77C22 [9]
  852.      = T  132x43  8x11         16/256k    B800 Trident TVGA 8800/8900
  853.      = T  132x25  9x16 1188x400     16/256k    B800 WD90C
  854.      = G   94x29  8x14    752x410                 Lava Chrome II EGA
  855.      = G  128x48  8x16 1024x768     16/256k    A000 ATI VGA Wonder v4+     [4]
  856.      = G           1024x768     16/256k         ATI VGA Wonder Plus
  857.      = G           1024x768     16/256k         ATI Ultra 8514A,ATI XL
  858.      = G  128x48  8x16 1024x768       4        A000 Oak OTI-067/077 chips [7]
  859.  56h = T  132x43  8x8           3???       2    B000 NSI Smart EGA+
  860.      = T  132x43  7x9           4        B000 Paradise VGA
  861.      = T  132x43  8x9           4        B000 Paradise VGA on multisync
  862.      = T  132x43         mono             Taxan 565 EGA
  863.      = T  132x43  7x9           2             AT&T VDC600
  864.      = T  132x43  9x8                     NEL Electronics BIOS
  865.      = T  132x50  8x8           4        A000 NCR 77C22 [9]
  866.      = T  132x60  8x8         16/256k    B800 Trident TVGA 8800/8900
  867.      = G           1024x768      16        A000 Oak VGA
  868.      = G  128x48  8x16 1024x768      16        A000 Oak OTI-067/077 chips [7]
  869.  57h = T  132x25  8x14           3???       4    B000 NSI Smart EGA+
  870.      = T  132x25  7x16           4        B000 Paradise VGA
  871.      = T  132x25  8x16           4        B000 Paradise VGA on multisync
  872.      = T  132x25  9x14                     NEL Electronics BIOS
  873.      = T  132x25         mono             Taxan 565 EGA
  874.      = T  132x25  7x16           2             AT&T VDC600
  875.      = T  132x25  9x14         16/256k    B800 Trident TVGA 8800/8900
  876.      = T  132x25  8x16           4        A000 NCR 77C22 [9]
  877.      = G   96x48  8x16    768x1024  16        A000 Oak OTI-067/077 chips [7]
  878.  58h = T   80x33  8x14          16        B800 ATI EGA Wonder,ATI VIP
  879.      = T   80x32  9x16          16             Genoa 6400
  880.      = T   80x43  8x8                     NEL Electronics BIOS
  881.      = T  132x30  9x16         16/256k    B800 Trident TVGA 8800/8900
  882.      = G  100x75  8x8    800x600     16/256k    A000 Paradise VGA
  883.      = G  100x75  8x8    800x600      16             AT&T VDC600
  884.      = G        800x600      16             AST VGA Plus, Compaq VGA
  885.      = G        800x600      16             Dell VGA
  886.      = G        800x600      16             Hewlett-Packard D1180A
  887.      = G        800x600     ???             ELT VGA PLUS 16
  888.      = G  100x75  8x8    800x600      16        A000 NCR 77C22 [9]
  889.      = G  160x64  8x16 1280x1024  16        A000 Oak OTI-077 chipset [7]
  890.      = G  100x75  8x8    800x600     16/256k    A000 Paradise VGA, WD90C
  891.  59h = T   80x43  9x8                     NEL Electronics BIOS
  892.      = T   80x66  8x8         16/256k    A000 ATI VIP
  893.      = T  132x43  9x11         16/256k    B800 Trident TVGA 8800/8900
  894.      = G  100x75  8x8    800x600       2        A000 Paradise VGA
  895.      = G  100x75  8x8    800x600       2             AT&T VDC600
  896.      = G        800x600       2             AST VGA Plus, Compaq VGA
  897.      = G        800x600       2             Dell VGA
  898.      = G        800x600       2             Hewlett-Packard D1180A
  899.      = G  100x75  8x8    800x600       2        A000 NCR 77C22 [9]
  900.      = G  128x48  8x16 1024x768     256        A000 Oak OTI-077 chipset [7]
  901.  5Ah = T   80x60  8x8                     NEL Electronics BIOS
  902.      = T  132x60  9x8         16/256k    B800 Trident TVGA 8800/8900
  903.      = G  128x48  8x16 1024x768       2        A000 NCR 77C22 [9]
  904.  5Bh = T   80x30  8x16                B800 ATI VGA Wonder (undoc)
  905.      = G        640x350     256             Genoa 6400
  906.      = G   80x25  8x16    640x400      32K        A000 Oak OTI-067/077 chips [7]
  907.      = G        800x600      16             Maxxon, SEFCO TVGA, Imtec
  908.      = G  100x75  8x8    800x600     16/256k    A000 Trident TVGA 8800, 8900
  909.      = G        800x600     ???             Vobis MVGA
  910.      = G  100x37  8x16    800x600                 NEL Electronics BIOS
  911.      = G  128x48  8x16 1024x768      16        A000 NCR 77C22 [8,9]
  912.  5Ch = T  100x37  8x16                     NEL Electronics BIOS
  913.      = G        640x400     256             Logix, ATI Prism Elite
  914.      = G        640x400     256             Maxxon, SEFCO TVGA, Imtec
  915.      = G   80x25  8x16    640x400     256/256k    A000 Zymos Poach, Hi Res 512
  916.      = G   80x25  8x16    640x400     256/256k    A000 Trident TVGA 8800/8900
  917.      = G   80x30  8x16    640x480     256             Genoa 6400
  918.      = G   80x30  8x16    640x480      32K        A000 Oak OTI-077 chipset [7]
  919.      = G  100x75  8x8    800x600     256        A000 NCR 77C22 [9]
  920.      = G  100x75  8x8    800x600     256/256k    A000 WD90C
  921.  5Dh = T  100x75  8x8                     NEL Electronics BIOS
  922.      = G        640x480     256             Logix, ATI Prism Elite
  923.      = G        640x480     256             Maxxon, SEFCO TVGA, Imtec
  924.      = G   80x30  8x16    640x480     256/256k    A000 Zymos Poach, Hi Res 512
  925.      = G   80x30  8x16    640x480     256/256k    A000 Trident TVGA 8800 (512K)
  926.      = G  128x48  8x16 1024x768      16        A000 NCR 77C22 [9]
  927.      = G  128x48  8x16 1024x768      16/256k    A000 WD90C
  928.  5Eh = G        640x400     256             Paradise VGA,VEGA VGA
  929.      = G        640x400     256             AST VGA Plus, NCR 77C22
  930.      = G        640x400     256             Compaq VGA, Dell VGA
  931.      = G   80x25  8x16    640x400     256             AT&T VDC600
  932.      = G   80x25  8x16    640x400     256        A000 NCR 77C22 [9]
  933.      = G        800x600      16             Logix, ATI Prism Elite
  934.      = G  100x37  8x16    800x600      16             NEL Electronics BIOS
  935.      = G  100x75  8x8    800x600     256             Genoa 6400
  936.      = G  100x75  8x8    800x600     256/256k    A000 Zymos Poach, Trident 8900
  937.      = G  100x75  8x8    800x600     256/256k    A000 Hi Res 512
  938.      = G   80x25  8x16    640x400     256/256k    A000 WD90C
  939.  5Fh = G        640x480     256             Paradise VGA
  940.      = G        640x480     256             AST VGA Plus, NCR 77C22
  941.      = G        640x480     256             Compaq VGA, Dell VGA
  942.      = G        640x480     256             Hewlett-Packard D1180A
  943.      = G   80x30  8x16    640x480     256             AT&T VDC600 (512K)
  944.      = G   80x30  8x16    640x480     256        A000 NCR 77C22 [9]
  945.      = G           1024x768      16             Logix, ATI Prism Elite
  946.      = G           1024x768      16             Maxxon, Imtec
  947.      = G  128x48  8x16 1024x768      16             Genoa 6400
  948.      = G  128x48  8x16 1024x768      16/256k    A000 Zymos Poach, Hi Res 512
  949.      = G  128x48  8x16 1024x768      16/256k    A000 Trident TVGA 88/8900 512K
  950.      = G   80x30  8x16    640x480     256/256k    A000 WD90C
  951.  60h = T  132x25  8x14          16/64       8    B800 Quadram Ultra VGA
  952.      = T  132x25  8x14          16             Genoa 6400
  953.      = T  132x25  8x14          16             Genoa SuperEGA BIOS 3.0+
  954.      = T  132x25                     Cirrus 5320 chipset
  955.      = G   80x???    ???x400                 Corona/Cordata BIOS 4.10+
  956.      = G   80x25  8x16    640x400     256       1    A000 Ahead A, Ahead B
  957.      = G        752x410                 VEGA VGA
  958.      = G        752x410      16             Tatung VGA
  959.      = G        752x410      16             Video7 V-RAM VGA
  960.      = G  128x48  8x16 1024x768       4/256k    A000 Trident TVGA 8900
  961.      = G  128x48  8x16 1024x768     256/256k    A000 WD90C
  962.  61h = T  132x29  8x12          16/64       8    B800 Quadram Ultra VGA
  963.      = T  132x29  8x8          16             Genoa 6400
  964.      = T  132x29  8x8          16             Genoa SuperEGA BIOS 3.0+
  965.      = T  132x50                     Cirrus 5320 chipset
  966.      = G        ???x400                 Corona/Cordata BIOS 4.10+
  967.      = G   80x25  8x16    640x400     256        A000 ATI VGA Wonder,VGA Wonder+
  968.      = G   80x25  8x16    640x400     256        A000 ATI Ultra 8514A,ATI XL
  969.      = G   80x30  8x16    640x480     256       1    A000 Ahead A, Ahead B (512K)
  970.      = G        720x540                 VEGA VGA
  971.      = G        720x540      16             Tatung VGA
  972.      = G        720x540      16             Video7 V-RAM VGA
  973.      = G   96x64  8x16    768x1024  16/256k    A000 Trident TVGA 88/8900 512K
  974.      = G  128x48  8x16 1024x768     256        A000 NCR 77C22 [8,9]
  975.  62h = T  132x32  8x11          16/64       6    B800 Quadram Ultra VGA
  976.      = T  132x32  8x12          16             Genoa 6400
  977.      = T  132x32  8x11          16             Genoa SuperEGA BIOS 3.0+
  978.      = G        640x450      16             Cirrus 510/520 chipset
  979.      = G   80x30  8x16    640x480     256        A000 ATI VGA Wonder,VGA Wonder+
  980.      = G   80x30  8x16    640x480     256        A000 ATI Ultra 8514A,ATI XL
  981.      = G        800x600                 VEGA VGA
  982.      = G        800x600      16             Tatung VGA
  983.      = G        800x600      16             Video7 V-RAM VGA
  984.      = G  100x75  8x8    800x600     256       1    A000 Ahead A, Ahead B (512K)
  985.      = G  128x48  8x16 1024x768     256/256k    A000 Trident TVGA 8900, Zymos
  986.      = G  128x48  8x16 1024x768     256        A000 NCR 77C22 [9]
  987.      = G        640x480     32K        A000 WD90C
  988.  63h = T  132x44  8x8          16/64       5    B800 Quadram Ultra VGA
  989.      = T  132x44  8x8          16             Genoa 6400
  990.      = T  132x44  8x8          16             Genoa SuperEGA BIOS 3.0+
  991.      = G        720x540      16             MORSE VGA
  992.      = G        720x540      16             Cirrus 510/520 chipset
  993.      = G  100x42  8x14    800x600     256        A000 ATI VGA Wonder,VGA Wonder+
  994.      = G  100x42  8x14    800x600     256        A000 ATI Ultra 8514A,ATI XL
  995.      = G  128x48  7x16 1024x768     256       1    A000 Ahead B (1MB)
  996.      = G           1024x768       2             Video7 V-RAM VGA
  997.      = G        800x600     32K        A000 WD90C
  998.  64h = T  132x60  8x8          16             Genoa 6400
  999.      = G        800x600      16             MORSE VGA
  1000.      = G        800x600      16             Cirrus 510/520 chipset
  1001.      = G        800x600     ???             SAMPO-Mira VGA
  1002.      = G           1024x768       4             Video7 V-RAM VGA
  1003.      = G  128x48  8x16 1024x768     256        A000 ATI VGA Wonder Plus,ATI XL
  1004.      = G  160x64  8x16 1280x1024 16/256k    A000 WD90C [8]
  1005.  65h = G           1024x768      16             Video7 V-RAM VGA
  1006.      = G  128x48  8x16 1024x768      16        A000 ATI VGA Wonder
  1007.  66h = G        640x400     256             Tatung VGA
  1008.      = G        640x400     256             Video7 V-RAM VGA
  1009.      = T   80x50  8x8    640x400     16/256k    B800 WD90C
  1010.  67h = G        640x480     256             Video7 V-RAM VGA
  1011.      = G  128x48  8x16 1024x768       4        A000 ATI VGA Wonder
  1012.      = G  160x64  8x16 1280x1024  16        A000 NCR 77C22 [8,9]
  1013.      = T   80x43  8x8    640x344     16/256k    B800 WD90C
  1014.  69h = G        720x540     256             Video7 V-RAM VGA
  1015.      = T  132x50  8x8  1056x400     16/256k    B800 WD90C
  1016.  6Ah = G        800x600      16        A000 VESA standard interface
  1017.      = G  100x75  8x8    800x600      16             Genoa 6400
  1018.      = G        800x600      16        A000 Ahead A
  1019.      = G  100x75  8x8    800x600      16       1    A000 Ahead B (VESA) (see 71h)
  1020.      = G        800x600      16             Zymos Poach, Hi Res 512
  1021.      = G        800x600      16             Epson LT-386SX in CRT Mode
  1022.      = G        800x600      16             Compuadd 316SL in CRT Mode
  1023.      = G  100x42  8x14    800x600            A000 ATI VGA Wonder (undoc)
  1024.      = G  160x64  8x16 1280x1024 256        A000 NCR 77C22 [8,9]
  1025.  6Bh = T  100x37  8x16          16             Genoa 6400
  1026.      = T  100x37  8x16                     NEL Electronics BIOS
  1027.  6Ch = G  100x75  8x8    800x600     256             Genoa 6400
  1028.      = G  160x60  8x16 1280x960     16/256k    A000 WD90C [8]
  1029.  70h =     extended mode set (see AX=0070h)         Everex Micro Enhancer EGA
  1030.      = T   40x25  8x8          16       8    B800 Quadram (CGA double scan)
  1031.      = T   40x25  8x8    (CGA dblscan)             Genoa SuperEGA BIOS 3.0+
  1032.      = G        360x480     256             Cirrus 510/520/5320 chips
  1033.      = G   90x28  8x14    720x392      16       1    A000 Ahead B
  1034.      = G        800x600      16             C&T chipset, Cardinal
  1035.  71h = T   80x25  8x8          16       8    B800 Quadram (CGA double scan)
  1036.      = T   80x25  8x8    (CGA dblscan)             Genoa SuperEGA BIOS 3.0+
  1037.      = G        528x400     256             Cirrus 510/520 chipset
  1038.      = G  100x35  8x16    800x600     16of64        A000 NSI Smart EGA+
  1039.      = G  100x75  8x8    800x600      16       1    A000 Ahead B (same as 6Ah)
  1040.      = G        960x720      16             C&T chipset, Cardinal
  1041.  72h = T   80x60  8x8          16        B800 Quadram Ultra VGA
  1042.      = T   80x60  8x8          16        B800 Genoa 6400
  1043.      = T   80x60  8x8          16        B800 Genoa SuperEGA BIOS 3.0+
  1044.      = G        528x480     256             Cirrus 510/520 chipset
  1045.      = G        640x480 32768        A000 ATI
  1046.      = G           1024x768      16             C&T chipset, Cardinal
  1047.      = G        640x480     16M        A000 WD90C
  1048.  73h = G   80x60  8x8    640x480      16        A000 Quadram Ultra VGA
  1049.      = G   80x60  8x8    640x480      16             Genoa 6400
  1050.      = G   80x60  8x8    640x480      16             Genoa SuperEGA BIOS 3.0+
  1051.  74h = T   80x66  8x8          16        B800 Quadram Ultra VGA
  1052.      = T   80x66  8x8          16        B800 Genoa 6400
  1053.      = T   80x66  8x8          16        B800 Genoa SuperEGA BIOS 3.0+
  1054.      = G        640x400       2        B800 Toshiba 3100 AT&T mode
  1055.      = G  128x48  8x16 1024x768      16       1    A000 Ahead A, Ahead B (512K)
  1056.  75h = G  128x48  8x16 1024x768       4       1    A000 Ahead B
  1057.      = G   80x66    640x528      16???        A000 Quadram Ultra VGA
  1058.      = G   80x66    640x528      16             Genoa SuperEGA BIOS 3.0+
  1059.  76h = T   94x29  8x14          16        B800 Quadram Ultra VGA
  1060.      = T   94x29  8x14                     Genoa SuperEGA BIOS 3.0+
  1061.      = G  128x48  8x16 1024x768       2       1    A000 Ahead B
  1062.  77h = G   94x29    752x410      16???        A000 Quadram Ultra VGA
  1063.      = G   94x29    752x410      16             Genoa SuperEGA BIOS 3.0+
  1064.  78h = T  100x37  8x16          16             Genoa 6400
  1065.      = T  100x75  8x8          16        B800 Quadram Ultra VGA
  1066.      = T  100x75  8x8                     Genoa SuperEGA BIOS 3.0+
  1067.      = G        640x400     256             STB VGA/EM-16 Plus
  1068.      = G        640x400     256             Cardinal, C&T chipset
  1069.      = G        640x400     256             Cirrus 5320 chipset
  1070.  79h = G        640x480     256             Cardinal, C&T chipset
  1071.      = G  100x75    800x600      16???        A000 Quadram Ultra VGA
  1072.      = G  100x75  8x8    800x600      16             Genoa SuperEGA BIOS 3.0+
  1073.      = G  100x75  8x8    800x600      16             Genoa 6400
  1074.  7Ah = T  114x60  8x8          16        B800 Quadram Ultra VGA
  1075.      = T  114x60  8x8                     Genoa SuperEGA BIOS 3.0+
  1076.      = G        720x540     256             C&T chipset, Cardinal
  1077.  7Bh = G        800x600     256             C&T chipset, Cardinal
  1078.      = G  114x60    912x480      16???        A000 Quadram Ultra VGA
  1079.      = G        912x480      16             Genoa SuperEGA BIOS 3.0+
  1080.  7Ch = G        512x512      16             Genoa
  1081.  7Dh = G   64x32  8x16    512x512     256             Genoa
  1082.  7Eh =     special mode set (see AX=007Eh)         Paradise VGA, AT&T VDC600
  1083.      = G   80x25  8x16    640x400     256             Genoa 6400
  1084.  7Fh =     special function set (see AX=007Fh)         Paradise VGA, AT&T VDC600
  1085.      = G  128x48  8x16 1024x768       4             Genoa 6400
  1086.  82h = T   80x25         B&W             AT&T VDC overlay mode [5]
  1087.  83h = T   80x25                     AT&T VDC overlay mode [5]
  1088.  86h = G        640x200     B&W             AT&T VDC overlay mode [5]
  1089.  88h = G   90x43  8x8    720x352     mono        B000 Hercules + MSHERC.COM
  1090.  C0h = G        640x400     2/prog pallet         AT&T VDC overlay mode [5]
  1091.  C4h =     disable output                     AT&T VDC overlay mode [5]
  1092.  D0h = G        640x400       2        B800 DEC VAXmate AT&T mode
  1093. Notes:
  1094. [1] for ATI EGA Wonder, mode 08h is only valid if SMS.COM is loaded resident.
  1095.       SMS maps mode 08h to mode 27h if the byte at location 0040:0063 is 0B4h,
  1096.       otherwise to mode 23h, thus selecting the appropriate (monochrome or
  1097.       color) 132x25 character mode.
  1098.     for ATI VGA Wonder, mode 08h is the same, and only valid if VCONFIG loaded
  1099.       resident
  1100. [2] early XGA boards support 132-column text but do not have this BIOS mode
  1101. [3] DESQview intercepts calls to change into these two modes (21h is page 0,
  1102.       22h is page 1) even if there is no Hercules graphics board installed
  1103. [4] ATI BIOS v4-1.00 has a text-scrolling bug in this mode
  1104. [5] for AT&T VDC overlay modes, BL contains the DEB mode, which may be 06h,
  1105.       40h, or 44h
  1106. [6] BIOS text support is broken in this undocumented mode; scrolling moves only
  1107.       about 1/3 of the screen (and does even that portion incorrectly), while
  1108.       screen clears only clear about 3/4.
  1109. [7] The Oak OTI-037/067/077 modes are present in the Oak VGA BIOS, which OEMs
  1110.       may choose to use only partially or not at all; thus, not all Oak boards
  1111.       support all "Oak" modes listed here
  1112. [8] interlaced only
  1113. [9] this card uses the full 128K A000h-BFFFh range for the video buffer,
  1114.       precluding the use of a monochrome adapter in the same system
  1115. ----------100070-----------------------------
  1116. INT 10 - VIDEO - Everex Micro Enhancer EGA/Viewpoint VGA - EXTENDED MODE SET
  1117.     AX = 0070h
  1118.     BL = mode (see below)
  1119. SeeAlso: AH=00h,AX=6F05h,AX=7000h/BX=0004h,AH=FFh"GO32"
  1120.  
  1121. Values for video mode:
  1122.       text/ text pixel     pixel    colors    disp    scrn  monitor    adapter
  1123.       grph resol  box    resoltn        page    addr
  1124.  00h = G        640x480      16             multsync    EGA,VGA
  1125.  01h = G        752x410      16             multsync    EGA,VGA
  1126.  02h = G        800x600      16             multsync    EGA,VGA
  1127.  03h = T   80x34                     multsync    EGA,VGA
  1128.  04h = T   80x60                     multsync    EGA,VGA
  1129.  05h = T   94x29                     multsync    EGA only
  1130.  06h = T   94x51                     multsync    EGA only
  1131.  07h = T  100x43  8x14          16                VGA only
  1132.  08h = T  100x75  8x8          16                VGA only
  1133.  09h = T   80x44                     EGA    EGA only
  1134.  0Ah = T  132x25                     EGA    EGA,VGA
  1135.  0Bh = T  132x44                     EGA    EGA,VGA
  1136.  0Ch = T  132x25                     CGA    EGA only
  1137.  0Dh = T   80x44                     mono    EGA only
  1138.  0Eh = T  132x25                     mono
  1139.  0Fh = T  132x44                     mono
  1140.  10h =     reserved
  1141.  11h = G           1280x350       4                EGA only
  1142.  12h = G           1280x600       4                EGA only
  1143.  13h = G        640x350     256                EGA,EV673
  1144.  14h = G        640x400     256
  1145.  15h = G        512x480     256
  1146.  16h = T   80x30  8x16         256                VGA only
  1147.  18h = T  100x27  8x16          16                VGA only
  1148.  20h = G           1024x768      16                Everex 629,678
  1149.                                 Everex EV-673
  1150.  21h = T  160x64  8x16 1280x1024  16                1MB VGA only
  1151.  30h = G        640x480     256                Everex 629,678
  1152.                                 Everex EV-673
  1153.  31h = G        800x600     256                Everex 629,678
  1154.                                 Everex EV-673
  1155.  32h = G  128x48  8x16 1024x768     256                1MB VGA only
  1156.  40h = T  132x30  8x16          16                VGA only
  1157.  50h = T  132x32  8x16         mono                VGA only
  1158.  62h = G   40x25  8x8    320x200     32K                Vwpt TC (EV629)
  1159.  70h = G   64x30  8x16    512x480     32K                Viewpoint TC
  1160.  71h = G   80x30  8x16    640x480     32K                Viewpoint TC
  1161.  76h = G   64x30  8x16    512x480     16M                Viewpoint TC
  1162.  77h = G   80x30  8x16    640x480     16M                Viewpoint TC
  1163. ----------10007E-----------------------------
  1164. INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - SET SPECIAL MODE
  1165.     AX = 007Eh
  1166.     BX = horizontal dimension of the mode desired
  1167.     CX = vertical dimension of the mode desired
  1168.          (both BX/CX in pixels for graphics modes, rows for alpha modes)
  1169.     DX = number of colors of the mode desired (0000h for monochrome modes)
  1170. Return: BH = 7Eh if successful (Paradise VGA)
  1171.     AL = 7Eh if successful (AT&T VDC600)
  1172. SeeAlso: AH=00h,AX=0070h,AX=007Fh,AX=6F05h,AH=FFh"GO32"
  1173. ----------10007F-----------------------------
  1174. INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - EXTENDED FUNCTIONS
  1175.     AX = 007Fh
  1176.     BH = function
  1177.         00h     set VGA operation
  1178.         01h     set non-VGA operation
  1179.         color modes (0,1,2,3,4,5,6) will set non-VGA CGA operation
  1180.         monochrome mode 7 will set non-VGA MDA/Hercules operation
  1181.         02h     query mode status
  1182.         Return: BL = 00h if operating in VGA mode, 01h if non-VGA mode
  1183.             CH = total video RAM size in 64k byte units
  1184.             CL = video RAM used by the current mode
  1185.         03h     lock current mode
  1186.         allows current mode (VGA or non-VGA) to survive re-boot
  1187.         04h     enter CGA mode (AT&T VDC600 only)
  1188.         05h     enter MDA mode (AT&T VDC600 only)
  1189.         0Ah,0Bh,0Ch,0Dh,0Eh,0Fh  WRITE PARADISE REGISTERS 0,1,2,3,4,5
  1190.         (port 03CEh indices 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh)
  1191.         BL = value to set in the paradise register
  1192.         1Ah,1Bh,1Ch,1Dh,1Eh,1Fh READ PARADISE REGISTERS 0,1,2,3,4,5
  1193.         (port 03CEh indices 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh)
  1194.         Return: BL = value of the paradise register
  1195.             BH = 7Fh if successful
  1196. Return: AL = 7Fh if successful (AT&T VDC600)
  1197. SeeAlso: AX=007Eh
  1198. ----------1001-------------------------------
  1199. INT 10 - VIDEO - SET TEXT-MODE CURSOR SHAPE
  1200.     AH = 01h
  1201.     CH = bit 7    should be zero
  1202.          bits 6,5 cursor blink
  1203.              (00=normal, 01=invisible, 10=erratic, 11=slow)
  1204.              (00=normal, other=invisible on EGA/VGA)
  1205.          bits 4-0 top scan line containing cursor
  1206.     CL = bottom scan line containing cursor (bits 0-4)
  1207. Notes:    buggy on EGA systems--BIOS remaps cursor shape in 43 line modes, but
  1208.       returns unmapped cursor shape
  1209.     UltraVision scales size to the current font height by assuming 14-line
  1210.       monochrome and 8-line color fonts; this call is not valid if cursor
  1211.       emulation has been disabled
  1212.     applications which wish to change the cursor by programming the
  1213.       hardware directly on EGA or above should call INT 10/AX=1130h or
  1214.       read 0040h:0085h first to determine the current font height
  1215. BUG:    AMI 386 BIOS and AST Premier 386 BIOS will lock up the system if AL
  1216.       is not equal to the current video mode
  1217. SeeAlso: AH=03h,AX=CD05h
  1218. ----------1002-------------------------------
  1219. INT 10 - VIDEO - SET CURSOR POSITION
  1220.     AH = 02h
  1221.     BH = page number
  1222.         0-3 in modes 2&3
  1223.         0-7 in modes 0&1
  1224.         0 in graphics modes
  1225.     DH = row (00h is top)
  1226.     DL = column (00h is left)
  1227. SeeAlso: AH=03h,AH=05h,INT 60/DI=030Bh
  1228. ----------1003-------------------------------
  1229. INT 10 - VIDEO - GET CURSOR POSITION AND SIZE
  1230.     AH = 03h
  1231.     BH = page number
  1232.         0-3 in modes 2&3
  1233.         0-7 in modes 0&1
  1234.         0 in graphics modes
  1235. Return: AX = 0000h (Phoenix BIOS)
  1236.     CH = start scan line
  1237.     CL = end scan line
  1238.     DH = row (00h is top)
  1239.     DL = column (00h is left)
  1240. Notes:    a separate cursor is maintained for each of up to 8 display pages
  1241.     many ROM BIOSes incorrectly return the default size for a color display
  1242.       (start 06h, end 07h) when a monochrome display is attached
  1243. SeeAlso: AH=01h,AH=02h
  1244. ----------1004-------------------------------
  1245. INT 10 - VIDEO - READ LIGHT PEN POSITION (except VGA)
  1246.     AH = 04h
  1247. Return: AH = light pen trigger flag
  1248.         00h not down/triggered
  1249.         01h down/triggered
  1250.         DH,DL = row,column of character light pen is on
  1251.         CH = pixel row (graphics modes 04h-06h)
  1252.         CX = pixel row (graphics modes with >200 rows)
  1253.         BX = pixel column
  1254. Notes:    on a CGA, returned column numbers are always multiples of 2 (320-
  1255.       column modes) or 4 (640-column modes)
  1256.     returned row numbers are only accurate to two lines
  1257. ----------1005-------------------------------
  1258. INT 10 - VIDEO -  SELECT ACTIVE DISPLAY PAGE
  1259.     AH = 05h
  1260.     AL = new page number (00h to number of pages - 1) (see AH=00h)
  1261. Note:    to determine whether the requested page actually exists, use AH=0Fh
  1262.       to query the current page after making this call
  1263. SeeAlso: AH=0Fh,AH=43h,AH=45h
  1264. ----------1005-------------------------------
  1265. INT 10 - VIDEO - PCjr - MANIPULATE CRT/CPU PAGE REGISTERS
  1266.     AH = 05h
  1267.     AL = subfunction
  1268.         80h read CRT and CPU page registers
  1269.         Return: BH = CRT page register
  1270.             BL = CPU page register
  1271.         81h set CPU page register
  1272.         BL = CPU page
  1273.         82h set CRT page register
  1274.         BH = CRT page
  1275.         83h set both CPU and CRT page registers
  1276.         BL = CPU page
  1277.         BH = CRT page
  1278. Notes:    the CPU page determines which 16K block of the first 128K of physical
  1279.       memory will be mapped at B800h by the hardware
  1280.     the CRT page determines the start address of the memory used by the
  1281.       video controller
  1282. ----------1005-------------------------------
  1283. INT 10 - VIDEO - Corona/Cordata BIOS v4.10+ - GRAPHICS BITMAP BUFFER
  1284.     AH = 05h
  1285.     AL =
  1286.         00h set address of graphics bitmap buffer (video modes 60h,61h)
  1287.         BX = segment of buffer
  1288.         0Fh get address of graphics bitmap buffer (video modes 60h,61h)
  1289.         Return: DX = segment of graphics bitmap buffer
  1290. ----------1006-------------------------------
  1291. INT 10 - VIDEO - SCROLL UP WINDOW
  1292.     AH = 06h
  1293.     AL = number of lines by which to scroll up (00h = clear entire window)
  1294.     BH = attribute used to write blank lines at bottom of window
  1295.     CH,CL = row,column of window's upper left corner
  1296.     DH,DL = row,column of window's lower right corner
  1297. Note:    affects only the currently active page (see AH=05h)
  1298. Warning: some implementations have a bug which destroys BP
  1299. SeeAlso: AH=07h,AH=72h,AH=73h,AX=7F07h,INT 50/AX=0014h
  1300. ----------1007-------------------------------
  1301. INT 10 - VIDEO - SCROLL DOWN WINDOW
  1302.     AH = 07h
  1303.     AL = number of lines by which to scroll down (00h=clear entire window)
  1304.     BH = attribute used to write blank lines at top of window
  1305.     CH,CL = row,column of window's upper left corner
  1306.     DH,DL = row,column of window's lower right corner
  1307. Note:    affects only the currently active page (see AH=05h)
  1308. Warning: some implementations have a bug which destroys BP
  1309. SeeAlso: AH=06h,AH=72h,AH=73h,INT 50/AX=0014h
  1310. ----------1008-------------------------------
  1311. INT 10 - VIDEO - READ CHARACTER AND ATTRIBUTE AT CURSOR POSITION
  1312.     AH = 08h
  1313.     BH = page number (00h to number of pages - 1) (see AH=00h)
  1314. Return: AH = attribute
  1315.         bit 7: blink
  1316.         bits 6-4: background color
  1317.             000 black
  1318.             001 blue
  1319.             010 green
  1320.             011 cyan
  1321.             100 red
  1322.             101 magenta
  1323.             110 brown
  1324.             111 white
  1325.         bits 3-0: foreground color
  1326.             0000 black     1000 dark gray
  1327.             0001 blue     1001 light blue
  1328.             0010 green     1010 light green
  1329.             0011 cyan     1011 light cyan
  1330.             0100 red     1100 light red
  1331.             0101 magenta     1101 light magenta
  1332.             0110 brown     1110 yellow
  1333.             0111 light gray     1111 white
  1334.     AL = character
  1335. Notes:    for monochrome displays, a foreground of 1 with background 0 is
  1336.       underlined 
  1337.     the blink bit may be reprogrammed to enable intense background colors
  1338.       using AX=1003h or by programming the CRT controller
  1339.     the foreground intensity bit (3) can be programmed to switch between
  1340.       character sets A and B on EGA and VGA cards, thus enabling 512
  1341.       simultaneous characters on screen.  In this case the bit's usual
  1342.       function (intensity) is regularly turned off.
  1343. SeeAlso: AH=09h,AX=1003h,AX=5001h
  1344. ----------1009-------------------------------
  1345. INT 10 - VIDEO - WRITE CHARACTER AND ATTRIBUTE AT CURSOR POSITION
  1346.     AH = 09h
  1347.     AL = character to display
  1348.     BH = page number (00h to number of pages - 1) (see AH=00h)
  1349.     BL = attribute (text mode) or color (graphics mode)
  1350.          if bit 7 set in graphics mode, character is xor'ed onto screen
  1351.     CX = number of times to write character
  1352. Notes:    all characters are displayed, including CR, LF, and BS
  1353.     replication count in CX may produce an unpredictable result in graphics
  1354.       modes if it is greater than the number of positions remaining in the
  1355.       current row
  1356. SeeAlso: AH=08h,AH=0Ah,AH=4Bh"GRAFIX",INT 17/AH=60h,INT 1F,INT 43,INT 44
  1357. ----------100A-------------------------------
  1358. INT 10 - VIDEO - WRITE CHARACTER ONLY AT CURSOR POSITION
  1359.     AH = 0Ah
  1360.     AL = character to display
  1361.     BH = page number (00h to number of pages - 1) (see AH=00h)
  1362.     BL = attribute (PCjr only) or color (graphics mode)
  1363.          if bit 7 set in graphics mode, character is xor'ed onto screen
  1364.     CX = number of times to write character
  1365. Notes:    all characters are displayed, including CR, LF, and BS
  1366.     replication count in CX may produce an unpredictable result in graphics
  1367.       modes if it is greater than the number of positions remaining in the
  1368.       current row
  1369. SeeAlso: AH=08h,AH=09h,AH=4Bh,INT 17/AH=60h,INT 1F,INT 43,INT 44
  1370. ----------100B--BH00-------------------------
  1371. INT 10 - VIDEO - SET BACKGROUND/BORDER COLOR
  1372.     AH = 0Bh
  1373.     BH = 00h
  1374.     BL = background/border color (border only in text modes)
  1375. SeeAlso: AH=0Bh/BH=01h
  1376. ----------100B--BH01-------------------------
  1377. INT 10 - VIDEO - SET PALETTE
  1378.     AH = 0BH
  1379.     BH = 01h
  1380.     BL = palette ID
  1381.         00h background, green, red, and brown/yellow
  1382.         01h background, cyan, magenta, and white
  1383. SeeAlso: AH=0Bh/BH=00h
  1384. ----------100C-------------------------------
  1385. INT 10 - VIDEO - WRITE GRAPHICS PIXEL
  1386.     AH = 0Ch
  1387.     BH = page number
  1388.     AL = pixel color (if bit 7 set, value is xor'ed onto screen)
  1389.     CX = column
  1390.     DX = row
  1391. Notes:    valid only in graphics modes
  1392.     BH is ignored if the current video mode supports only one page
  1393. SeeAlso: AH=0Dh,AH=46h
  1394. ----------100D-------------------------------
  1395. INT 10 - VIDEO - READ GRAPHICS PIXEL
  1396.     AH = 0Dh
  1397.     BH = page number
  1398.     CX = column
  1399.     DX = row
  1400. Return: AL = pixel color
  1401. Notes:    valid only in graphics modes
  1402.     BH is ignored if the current video mode supports only one page
  1403. SeeAlso: AH=0Ch,AH=47h
  1404. ----------100E-------------------------------
  1405. INT 10 - VIDEO - TELETYPE OUTPUT
  1406.     AH = 0Eh
  1407.     AL = character to write
  1408.     BH = page number
  1409.     BL = foreground color (graphics modes only)
  1410. Desc:    display a character on the screen, advancing the cursor and scrolling
  1411.       the screen as necessary
  1412. Notes:    characters 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) are interpreted
  1413.       and do the expected things
  1414.     IBM PC ROMs dated 4/24/81 and 10/19/81 require that BH be the same as
  1415.       the current active page
  1416. SeeAlso: AH=02h,AH=0Ah
  1417. ----------100F-------------------------------
  1418. INT 10 - VIDEO - GET CURRENT VIDEO MODE
  1419.     AH = 0Fh
  1420. Return: AH = number of character columns
  1421.     AL = display mode (see AH=00h)
  1422.     BH = active page (see AH=05h)
  1423. Notes:    if mode was set with bit 7 set ("no blanking"), the returned mode will
  1424.       also have bit 7 set
  1425.     EGA, VGA, and UltraVision return either AL=03h (color) or AL=07h
  1426.       (monochrome) in all extended-row text modes
  1427. SeeAlso: AH=00h,AH=05h,AX=10F2h/BL=00h,AX=1130h,AX=CD04h
  1428. ----------100F56BX4756-----------------------
  1429. INT 10 - VUIMAGE DISPLAY DRIVER (v2.20 and below)
  1430.     AX = 0F56h
  1431.     BX = 4756h
  1432.     CX = 4944h
  1433.     DL = function
  1434.         01h installation check
  1435.         Return: AX = 5649h
  1436.             BX = 4443h
  1437.             CX = 5647h
  1438.             DH = 01h
  1439.         02h get first video mode's parameters
  1440.         Return: AX = BIOS mode number
  1441.             BX = width in pixels
  1442.             CX = height in pixels
  1443.             DX = number of colors
  1444.         03h get next video mode's parameters
  1445.         Return: as for DL=02h
  1446.         04h display line???
  1447.         ES:DI -> record (see below)
  1448.         ???
  1449.         Return: ???
  1450. Notes:    VUIMAGE is a shareware GIF/TIFF image viewer by Offe Enterprises
  1451.     the use of TSR display drivers was discontinued after v2.20
  1452.  
  1453. Format of record for DL=04h:
  1454. Offset    Size    Description
  1455.  00h    WORD    row number
  1456.  02h    WORD    starting column???
  1457.  04h    WORD    ending column???
  1458.     ???
  1459. ----------100F--SIF123-----------------------
  1460. INT 10 - FRIEZE v7.41+ - INSTALLATION CHECK
  1461.     AH = 0Fh
  1462.     SI = F123h
  1463.     DI = 321Fh
  1464. Return: AH = number of character columns
  1465.     AL = display mode (see AH=00h)
  1466.     BH = active page (see AH=05h)
  1467.     SI = DI = F345h if installed
  1468. Notes:    if mode was set with bit 7 set ("no blanking"), the returned mode will
  1469.       also have bit 7 set
  1470.     EGA, VGA, and UltraVision return either AL=03h (color) or AL=07h
  1471.       (monochrome) in all extended-row text modes
  1472. SeeAlso: AH=0Fh"VIDEO",AH=4Bh"FRIEZE"
  1473. ----------1010-------------------------------
  1474. INT 10 - BIOS Window Extension v1.1 - SET WINDOW COORDINATES
  1475.     AH = 10h
  1476.     CH,CL = row,column of upper left corner of window
  1477.     DH,DL = row,column of lower right corner of window
  1478. Return: AL = status
  1479.         00h successful
  1480.         01h failed
  1481.     AH destroyed
  1482. Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
  1483. Note:    when a window has been set, all output via AH=0Eh is restricted to
  1484.       the specified window
  1485. SeeAlso: AH=11h"Window",AH=12h"Window"
  1486. ----------1010-------------------------------
  1487. INT 10 - VIDEO - Eagle PC2 BIOS Rev. C - SET SCROLL SPEED
  1488.     AH = 10h
  1489.     AL = speed
  1490.         00h fast
  1491.         01h slow (only moves characters during vertical retrace)
  1492. Return: AH = previous speed
  1493. ----------101000----------------------------
  1494. INT 10 - VIDEO - SET SINGLE PALETTE REGISTER (PCjr,EGA,MCGA,VGA)
  1495.     AX = 1000h
  1496.     BL = palette register number (00h-0Fh)
  1497.        = attribute register number (undocumented)
  1498.          10h attribute mode control register (should let BIOS control this)
  1499.          11h overscan color register (see also AX=1001h)
  1500.          12h color plane enable register (bits 3-0 enable corresponding
  1501.         text attribute bit)
  1502.          13h horizontal PEL panning register
  1503.          14h color select register
  1504.     BH = color or attribute register value
  1505. Notes:    on MCGA, only BX = 0712h is supported
  1506.     under UltraVision, the palette locking status (see AX=CD01h)
  1507.       determines the outcome
  1508. SeeAlso: AX=1002h,AX=1007h,AX=CD01h
  1509. ----------101001-----------------------------
  1510. INT 10 - VIDEO - SET BORDER (OVERSCAN) COLOR (PCjr,EGA,VGA)
  1511.     AX = 1001h
  1512.     BH = border color (00h-3Fh)
  1513. BUG:    the original IBM VGA BIOS incorrectly updates the parameter save area
  1514.       and places the border color at offset 11h of the palette table
  1515.       rather than offset 10h
  1516. Note:    under UltraVision, the palette locking status (see AX=CD01h)
  1517.       determines the outcome
  1518. SeeAlso: AX=1002h,AX=1008h,AX=CD01h
  1519. ----------101002-----------------------------
  1520. INT 10 - VIDEO - SET ALL PALETTE REGISTERS (PCjr,EGA,VGA)
  1521.     AX = 1002h
  1522.     ES:DX -> palette register list
  1523. Note:    under UltraVision, the palette locking status (see AX=CD01h)
  1524.       determines the outcome
  1525. SeeAlso: AX=1000h,AX=1001h,AX=1009h,AX=CD01h
  1526.  
  1527. Format of palette register list:
  1528. Offset    Size    Description
  1529.  00h 16 BYTEs    colors for palette registers 00h through 0Fh
  1530.  10h    BYTE    border color
  1531. ----------101003-----------------------------
  1532. INT 10 - VIDEO - TOGGLE INTENSITY/BLINKING BIT (Jr, PS, TANDY 1000, EGA, VGA)
  1533.     AX = 1003h
  1534.     BL = new state
  1535.         00h background intensity enabled
  1536.         01h blink enabled
  1537.     BH = 00h to avoid problems on some adapters
  1538. Notes:    although there is no function to get the current status on adapters
  1539.       prior to the VGA, bit 5 of 0040h:0065h indicates the state; on the
  1540.       VGA, use AH=1Bh and check offset 2Dh of the returned data
  1541.     when configured for a monochrome display, the Boca Research Multi-EGA
  1542.       with ROM v M1.1 Type D has its screen disrupted if BH is not clear
  1543. SeeAlso: AH=08h,AH=1Bh
  1544. ----------101007-----------------------------
  1545. INT 10 - VIDEO - GET INDIVIDUAL PALETTE REGISTER (VGA,UltraVision v2+)
  1546.     AX = 1007h
  1547.     BL = palette or attribute (undoc) register number (see AX=1000h)
  1548. Return: BH = palette or attribute register value
  1549. Note:    UltraVision v2+ supports this function even on color EGA systems in
  1550.       video modes 00h-03h, 10h, and 12h; direct programming of the palette
  1551.       registers will cause incorrect results because the EGA registers are
  1552.       write-only.  To guard against older versions or unsupported video
  1553.       modes, programs which expect to use this function on EGA systems
  1554.       should set BH to FFh on entry.
  1555. SeeAlso: AX=1000h,AX=1009h
  1556. ----------101008-----------------------------
  1557. INT 10 - VIDEO - READ OVERSCAN (BORDER COLOR) REGISTER (VGA,UltraVision v2+)
  1558.     AX = 1008h
  1559. Return: BH = border color (00h-3Fh)
  1560. Note:    UltraVision v2+ supports this function even on color EGA systems in
  1561.       video modes 00h-03h, 10h, and 12h; direct programming of the palette
  1562.       registers will cause incorrect results because the EGA registers are
  1563.       write-only.  To guard against older versions or unsupported video
  1564.       modes, programs which expect to use this function on EGA systems
  1565.       should set BH to FFh on entry.
  1566. SeeAlso: AX=1001h
  1567. ----------101009-----------------------------
  1568. INT 10 - VIDEO - READ ALL PALETTE REGISTERS AND OVERSCAN REGISTER (VGA)
  1569.     AX = 1009h
  1570.     ES:DX -> 17-byte buffer (see AX=1002h)
  1571. Note:    UltraVision v2+ supports this function even on color EGA systems in
  1572.       video modes 00h-03h, 10h, and 12h; direct programming of the palette
  1573.       registers will cause incorrect results because the EGA registers are
  1574.       write-only.  To guard against older versions or unsupported video
  1575.       modes, programs which expect to use this function on EGA systems
  1576.       should set the ES:DX buffer to FFh before calling.
  1577. SeeAlso: AX=1002h,AX=1007h,AX=CD02h
  1578. ----------101010-----------------------------
  1579. INT 10 - VIDEO - SET INDIVIDUAL DAC REGISTER (VGA/MCGA)
  1580.     AX = 1010h
  1581.     BX = register number
  1582.     CH = new value for green (0-63)
  1583.     CL = new value for blue (0-63)
  1584.     DH = new value for red (0-63)
  1585. SeeAlso: AX=1012h,AX=1015h
  1586. ----------101012-----------------------------
  1587. INT 10 - VIDEO - SET BLOCK OF DAC REGISTERS (VGA/MCGA)
  1588.     AX = 1012h
  1589.     BX = starting color register
  1590.     CX = number of registers to set
  1591.     ES:DX -> table of 3*CX bytes where each 3 byte group represents one
  1592.          byte each of red, green and blue (0-63)
  1593. SeeAlso: AX=1010h,AX=1017h
  1594. ----------101013-----------------------------
  1595. INT 10 - VIDEO - SELECT VIDEO DAC COLOR PAGE (VGA)
  1596.     AX = 1013h
  1597.     BL = subfunction
  1598.         00h select paging mode
  1599.         BH = 00h select 4 blocks of 64
  1600.         BH = 01h select 16 blocks of 16
  1601.         01h select page
  1602.         BH = page number (00h to 03h) or (00h to 0Fh)
  1603. Note:    this function is not valid in mode 13h
  1604. SeeAlso: AX=101Ah
  1605. ----------101015-----------------------------
  1606. INT 10 - VIDEO - READ INDIVIDUAL DAC REGISTER (VGA/MCGA)
  1607.     AX = 1015h
  1608.     BL = palette register number
  1609. Return: DH = red value
  1610.     CH = green value
  1611.     CL = blue value
  1612. SeeAlso: AX=1010h,AX=1017h
  1613. ----------101017-----------------------------
  1614. INT 10 - VIDEO - READ BLOCK OF DAC REGISTERS (VGA/MCGA)
  1615.     AX = 1017h
  1616.     BX = starting palette register
  1617.     CX = number of palette registers to read
  1618.     ES:DX -> buffer (3 * CX bytes in size) (see also AX=1012h)
  1619. Return: buffer filled with CX red, green and blue triples
  1620. SeeAlso: AX=1012h,AX=1015h
  1621. ----------101018-----------------------------
  1622. INT 10 U - VIDEO - SET PEL MASK (VGA/MCGA)
  1623.     AX = 1018h
  1624.     BL = new PEL value
  1625. SeeAlso: AX=1019h
  1626. ----------101019-----------------------------
  1627. INT 10 U - VIDEO - READ PEL MASK (VGA/MCGA)
  1628.     AX = 1019h
  1629. Return:    BL = value read
  1630. SeeAlso: AX=1018h
  1631. ----------10101A-----------------------------
  1632. INT 10 - VIDEO - GET VIDEO DAC COLOR-PAGE STATE (VGA)
  1633.     AX = 101Ah
  1634. Return: BL = paging mode
  1635.         00h four pages of 64
  1636.         01h sixteen pages of 16
  1637.     BH = current page
  1638. SeeAlso: AX=1013h
  1639. ----------10101B-----------------------------
  1640. INT 10 - VIDEO - PERFORM GRAY-SCALE SUMMING (VGA/MCGA)
  1641.     AX = 101Bh
  1642.     BX = starting palette register
  1643.     CX = number of registers to convert
  1644. SeeAlso: AH=12h/BL=33h
  1645. ----------1010E0-----------------------------
  1646. INT 10 - VIDEO - Diamond Speedstar 24 - SET 24-BIT GRAPHICS MODE
  1647.     AX = 10E0h
  1648.     BL = video mode (see also AH=00h)
  1649.         2Eh = 640x480
  1650. Return: ???
  1651. SeeAlso: AH=00h,AX=10F0h
  1652. ----------1010F0-----------------------------
  1653. INT 10 - VIDEO - Tseng ET-4000 BIOS - SET HiColor GRAPHICS MODE
  1654.     AX = 10F0h
  1655.     BL = video mode (see also AH=00h)
  1656.         32768-color modes:
  1657.         13h = 320x200
  1658.         2Dh = 640x350
  1659.         2Eh = 640x480
  1660.         2Fh = 640x400
  1661.         30h = 800x600
  1662.         16M-color modes:
  1663.         3Eh = 640x480 (Genoa 7900)
  1664. Return:    AL = 10h if supported
  1665.     AH = status
  1666.         00h if successful
  1667.         other on error
  1668. Note:    the Tseng HiColor BIOS extensions are supported by:
  1669.       Diamond Computer Systems    SpeedStar HiColor VGA
  1670.       Everex Systems        HC VGA
  1671.       Focus Information Systems    2theMax 4000
  1672.       Cardinal Technologies        VGA732
  1673.       Orchid ProDesigner IIs    Genoa 7900
  1674. SeeAlso: AH=00h,AX=10E0h,AX=10F1h,AX=10F2h
  1675. ----------1010F1-----------------------------
  1676. INT 10 - VIDEO - Tseng ET-4000 BIOS - GET DAC TYPE
  1677.     AX = 10F1h
  1678. Return: AL = 10h if supported
  1679.     BL = type of digital/analog converter
  1680.         00h normal VGA DAC
  1681.         01h Sierra SC1148x HiColor DAC
  1682.         02h new Sierra DAC
  1683.        else other HiColor DAC
  1684. SeeAlso: AX=10F0h,AX=10F2h
  1685. ----------1010F2BL00-------------------------
  1686. INT 10 u - VIDEO - Tseng ET-4000 BIOS - CHECK IF IN HiColor MODE
  1687.     AX = 10F2h
  1688.     BL = 00h
  1689. Return: AX = 0010h if supported
  1690.     BL = video mode type
  1691.         00h normal
  1692.         else HiColor mode
  1693. SeeAlso: AH=0Fh,AX=10F0h,AX=10F1h
  1694. ----------1011-------------------------------
  1695. INT 10 - BIOS Window Extension v1.1 - GET WINDOW COORDINATES
  1696.     AH = 11h
  1697. Return: CH,CL = row,column of upper left corner
  1698.     DH,DL = row,column of lower right corner
  1699. Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
  1700. SeeAlso: AH=10h"Window",AH=12h"Window"
  1701. ----------1011-------------------------------
  1702. INT 10 - VIDEO - TEXT-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, VGA)
  1703.     AH = 11h
  1704.     The following functions will cause a mode set, completely resetting
  1705.     the video environment, but without clearing the video buffer
  1706.     AL = 00h, 10h: load user-specified patterns
  1707.         ES:BP -> user table
  1708.         CX      = count of patterns to store
  1709.         DX      = character offset into map 2 block
  1710.         BL      = block to load in map 2
  1711.         BH      = number of bytes per character pattern
  1712.     AL = 01h, 11h: load ROM monochrome patterns (8 by 14)
  1713.         BL      = block to load
  1714.     AL = 02h, 12h: load ROM 8 by 8 double-dot patterns
  1715.         BL      = block to load
  1716.     AL = 03h: set block specifier
  1717.         BL      = block specifier
  1718.            (EGA/MCGA) bits 0,1 = block selected by chars with attribute
  1719.                      bit 3 = 0
  1720.                   bits 2,3 = block selected by chars with attribute
  1721.                      bit 3 = 1
  1722.            (VGA) bits 0,1,4 = block selected by attribute bit 3 = 0
  1723.              bits 2,3,5 = block selected by attribute bit 3 = 1
  1724.     AL = 04h, 14h: load ROM 8x16 character set (VGA)
  1725.         BL    = block to load
  1726. Notes:    The routines called with AL=1xh are designed to be called only
  1727.       immediately after a mode set and are similar to the routines called
  1728.       with AL=0xh, except that:
  1729.           Page 0 must be active.
  1730.           Bytes/character is recalculated.
  1731.           Max character rows is recalculated.
  1732.           CRT buffer length is recalculated.
  1733.           CRTC registers are reprogrammed as follows:
  1734.              R09 = bytes/char-1 ; max scan line (mode 7 only)
  1735.              R0A = bytes/char-2 ; cursor start
  1736.              R0B = 0        ; cursor end
  1737.              R12 = ((rows+1)*(bytes/char))-1 ; vertical display end
  1738.              R14 = bytes/char    ; underline loc
  1739.                (*** BUG: should be 1 less ***)
  1740.     the current block specifiers may be determined with INT 10/AH=1Bh,
  1741.       looking at offsets 2Bh and 2Ch of the returned data (VGA only)
  1742. SeeAlso: AH=1Bh,AX=CD10h
  1743. ----------1011-------------------------------
  1744. INT 10 - VIDEO - GRAPHICS-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, VGA)
  1745.     AH = 11h
  1746.     AL = 20h: set user 8 by 8 graphics characters (INT 1F)
  1747.         ES:BP -> user table
  1748.     AL = 21h: set user graphics characters
  1749.         ES:BP -> user table
  1750.         CX      = bytes per character
  1751.         BL      = row specifier
  1752.            00h user set
  1753.               DL = number of rows
  1754.            01h 14 rows
  1755.            02h 25 rows
  1756.            03h 43 rows
  1757.     AL = 22h: ROM 8 by 14 set
  1758.         BL = row specifier (see above)
  1759.     AL = 23h: ROM 8 by 8 double dot
  1760.         BL = row specifier (see above)
  1761.     AL = 24h: load 8x16 graphics characters (VGA/MCGA)
  1762.         BL = row specifier (see above)
  1763.     AL = 29h: load 8x16 graphics characters (Compaq Systempro)
  1764.         BL = row specifier (see above)
  1765. Notes:    these functions are meant to be called only after a mode set
  1766.     UltraVision v2+ sets INT 43 to the appropriate font for AL=22h,23h,24h,
  1767.       and 29h
  1768. SeeAlso: INT 1F, INT 43
  1769. ----------101130-----------------------------
  1770. INT 10 - VIDEO - GET FONT INFORMATION (EGA, MCGA, VGA)
  1771.     AX = 1130h
  1772.     BH = pointer specifier
  1773.         00h INT 1Fh pointer
  1774.         01h INT 43h pointer
  1775.         02h ROM 8x14 character font pointer
  1776.         03h ROM 8x8 double dot font pointer
  1777.         04h ROM 8x8 double dot font (high 128 characters)
  1778.         05h ROM alpha alternate (9 by 14) pointer (EGA,VGA)
  1779.         06h ROM 8x16 font (MCGA, VGA)
  1780.         07h ROM alternate 9x16 font (VGA only)
  1781.         11h (UltraVision v2+) 8x20 font (VGA) or 8x19 font (autosync EGA)
  1782.         12h (UltraVision v2+) 8x10 font (VGA) or 8x11 font (autosync EGA)
  1783. Return: ES:BP = specified pointer
  1784.     CX    = bytes/character of on-screen font (not the requested font!)
  1785.     DL    = character rows on screen - 1 (VGA)
  1786.           = character rows on screen (EGA)
  1787. Note:    for UltraVision v2+, the 9xN alternate fonts follow the corresponding
  1788.       8xN font at ES:BP+256N
  1789. SeeAlso: AX=1100h,AX=1120h,INT 1F,INT 43
  1790. ----------1012-------------------------------
  1791. INT 10 - BIOS Window Extension v1.1 - GET BLANKING ATTRIBUTE
  1792.     AH = 12h
  1793. Return: BH = attribute to use on blanked lines when scrolling
  1794. Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
  1795. SeeAlso: AH=11h"Window",AH=12h"Window"
  1796. ----------1012--BL10-------------------------
  1797. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, EGA, VGA, MCGA) - GET EGA INFO
  1798.     AH = 12h
  1799.     BL = 10h
  1800. Return: BH = 00h color mode in effect (I/O port 3Dxh)
  1801.          01h mono mode in effect (I/O port 3Bxh)
  1802.     BL = 00h  64k bytes memory installed
  1803.          01h 128k bytes memory installed
  1804.          02h 192k bytes memory installed
  1805.          03h 256k bytes memory installed
  1806.     CH = feature bits
  1807.     CL = switch settings
  1808. Note:    one possible check for the presence of an EGA or later display card
  1809.       is to call this function with BH=FFh; if not present, BH will be
  1810.       unchanged on return
  1811. ----------1012--BL20-------------------------
  1812. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS,EGA,VGA,MCGA) - ALTERNATE PRTSC
  1813.     AH = 12h
  1814.     BL = 20h  select alternate print screen routine
  1815. Notes:    installs a PrtSc routine from the video card's BIOS to replace the
  1816.       default PrtSc handler from the ROM BIOS, which usually does not
  1817.       understand screen heights other than 25 lines
  1818.     some adapters disable print-screen instead of enhancing it
  1819. SeeAlso: INT 05
  1820. ----------1012--BL2E-------------------------
  1821. INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
  1822.     AH = 12h
  1823.     BL = 2Eh
  1824. Note:    due to an omitted end-of-list marker, this version of the BIOS will
  1825.       crash the system on this function
  1826. ----------1012--BL30-------------------------
  1827. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - SELECT VERTICAL RESOLUTION
  1828.     AH = 12h
  1829.     BL = 30h
  1830.     AL = vertical resolution
  1831.          00h 200 scan lines
  1832.          01h 350 scan lines
  1833.          02h 400 scan lines
  1834. Return: AL = 12h if function supported
  1835. ----------1012--BL31-------------------------
  1836. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - PALETTE LOADING
  1837.     AH = 12h
  1838.     BL = 31h
  1839.     AL = 00h enable default palette loading
  1840.          01h disable default palette loading
  1841. Return: AL = 12h if function supported
  1842. ----------1012--BL32-------------------------
  1843. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - VIDEO ADDRESSING
  1844.     AH = 12h
  1845.     BL = 32h
  1846.     AL = 00h enable video addressing
  1847.          01h disable video addressing
  1848. Return: AL = 12h if function supported
  1849. ----------1012--BL33-------------------------
  1850. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - GRAY-SCALE SUMMING
  1851.     AH = 12h
  1852.     BL = 33h
  1853.     AL = 00h enable gray scale summing
  1854.          01h disable gray scale summing
  1855. Return: AL = 12h if function supported
  1856. SeeAlso: AX=101Bh,AX=BF06h
  1857. ----------1012--BL34-------------------------
  1858. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - CURSOR EMULATION
  1859.     AH = 12h
  1860.     BL = 34h
  1861.     AL = 00h enable alphanumeric cursor emulation
  1862.          01h disable alphanumeric cursor emulation
  1863. Return: AL = 12h if function supported
  1864. ----------1012--BL35-------------------------
  1865. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS) - DISPLAY-SWITCH INTERFACE
  1866.     AH = 12h
  1867.     BL = 35h
  1868.     AL = 00h initial adapter video off
  1869.          01h initial planar video on
  1870.          02h switch active video off
  1871.          03h switch inactive video on
  1872.          80h *UNDOCUMENTED* set system board video active flag
  1873.     ES:DX -> buffer (128 byte save area if AL = 0, 2 or 3)
  1874. Return: AL = 12h if function supported
  1875. ----------1012--BL36-------------------------
  1876. INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, VGA) - VIDEO REFRESH CONTROL
  1877.     AH = 12h
  1878.     BL = 36h
  1879.     AL = 00h enable refresh
  1880.          01h disable refresh
  1881. Return: AL = 12h if function supported
  1882. ----------1012--BH55-------------------------
  1883. INT 10 - VIDEO - ALTERNATE FUNC SELECT (ATI,Tatung,Taxan) - ENHANCED FEATURES
  1884.     AH = 12h
  1885.     BH = 55h
  1886.     BL = subfunction
  1887.         00h disabled enhanced features
  1888.         01h enable enhanced features
  1889.         02h get status
  1890.         Return: AL = status flags
  1891.                 bit 3: set if enhanced features enabled
  1892.                 bits 7-5 monitor type
  1893.                 000 PS/2 mono
  1894.                 001 PS/2 color
  1895.                 010 multi-sync
  1896.                 011 Taxan 650 25kHz
  1897.                 100 RGB
  1898.                 101 mono
  1899.                 110 EGA
  1900.                 111 Compaq internal
  1901.         03h disable register trapping (CGA emulation)
  1902.         04h enable register trapping
  1903.         05h program mode described by table at ES:BP
  1904.         06h get mode table
  1905.         AL = video mode
  1906.         Return: ES:BP -> table suitable for mode AL (and subfnc BL=05h)
  1907.             BP = FFFFh on error
  1908.  
  1909. Format of ATI VGA Wonder video mode table:
  1910. Offset    Size    Description
  1911.  00h    BYTE    number of columns
  1912.  01h    BYTE    maximum row (number of rows - 1)
  1913.  02h    BYTE    scan lines per row
  1914.  03h    WORD    video buffer size in bytes
  1915.  05h  4 BYTEs    values for Sequencer registers 1-4
  1916.  09h    BYTE    value for Miscellaneous Output register
  1917.  0Ah 25 BYTEs    values for CRTC registers 00h-18h
  1918.         00h horizontal total size (chars)
  1919.         01h horizontal displayed (chars)
  1920.         02h horizontal sync position (chars)
  1921.         03h horizontal sync width (chars)
  1922.         04h vertical total size (char rows)
  1923.         05h vertical total adjust (scan lines)
  1924.         06h vertical displayed (char rows)
  1925.         07h vertical sync position (char rows)
  1926.         08h interlace mode
  1927.         09h max scan line in row
  1928.         0Ah cursor start scan line
  1929.         0Bh cursor end scan line
  1930.         0Ch screen memory start (high)
  1931.         0Dh screen memory start (low)
  1932.         0Eh cursor address (high)
  1933.         0Fh cursor address (low)
  1934.         10h light pen (high)
  1935.         11h light pen (low)
  1936.  23h 20 BYTEs    default palette (values for Attribute Controller regs 00h-13h)
  1937.  37h  9 BYTEs    values for Graphics Controller registers 00h-08h
  1938. ----------1012--BL74-------------------------
  1939. INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
  1940.     AH = 12h
  1941.     BL = 74h
  1942. Note:    due to an omitted end-of-list marker, this version of the BIOS will
  1943.       crash the system on this function
  1944. ----------1012--BL80-------------------------
  1945. INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
  1946.     AH = 12h
  1947.     BL = 80h
  1948. Note:    due to an omitted end-of-list marker, this version of the BIOS will
  1949.       crash the system on this function
  1950. ----------1012--BLBE-------------------------
  1951. INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
  1952.     AH = 12h
  1953.     BL = BEh
  1954. Note:    due to an omitted end-of-list marker, this version of the BIOS will
  1955.       crash the system on this function
  1956. ----------1012--BLC6-------------------------
  1957. INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
  1958.     AH = 12h
  1959.     BL = C6h
  1960. Note:    due to an omitted end-of-list marker, this version of the BIOS will
  1961.       crash the system on this function
  1962. ----------1012--BLF0-------------------------
  1963. INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
  1964.     AH = 12h
  1965.     BL = F0h
  1966. Note:    due to an omitted end-of-list marker, this version of the BIOS will
  1967.       crash the system on this function
  1968. ----------1013-------------------------------
  1969. INT 10 - VIDEO - WRITE STRING (AT and later,EGA)
  1970.     AH = 13h
  1971.     AL = write mode
  1972.        bit 0: update cursor after writing
  1973.            1: string contains alternating characters and attributes
  1974.     BH = page number
  1975.     BL = attribute if string contains only characters
  1976.     CX = number of characters in string
  1977.     DH,DL = row,column at which to start writing
  1978.     ES:BP -> string to write
  1979. Notes:    recognizes CR, LF, BS, and bell
  1980.     also available PC or XT with EGA or higher
  1981.     HP 95LX only supports write mode 00h
  1982. BUG:    on the IBM VGA Adapter, any scrolling which may occur is performed on
  1983.       the active page rather than the requested page
  1984. SeeAlso: AH=09h,AH=0Ah
  1985. ----------101400-----------------------------
  1986. INT 10 - VIDEO - LOAD USER-SPECIFIED LCD CHARACTER FONT (CONV,Compaq Port 386)
  1987.     AX = 1400h
  1988.     ES:DI -> character font
  1989.     BH = number of bytes per character
  1990.         08h or 10h (Compaq)
  1991.     BL = 00h load main font (block 0)
  1992.          01h load alternate font (block 1)
  1993.     CX = number of characters to store
  1994.     DX = character offset into RAM font area
  1995. SeeAlso: AH=11h,AX=1401h
  1996. ----------101401-----------------------------
  1997. INT 10 - VIDEO - LOAD SYSTEM ROM DEFAULT LCD CHARACTER FONT (CONV,CP386)
  1998.     AX = 1401h
  1999.     BL = font to load
  2000.         00h main font (block 0)
  2001.         01h alternate font (block 1)
  2002. SeeAlso: AH=11h,AX=1400h
  2003. ----------101402-----------------------------
  2004. INT 10 - VIDEO - SET MAPPING OF LCD HIGH INTENSITY ATTRIBUTES (CONV,CP386)
  2005.     AX = 1402h
  2006.     BL = function
  2007.         00h ignore high intensity attribute
  2008.         01h map high intensity to underscore
  2009.         02h map high intensity to reverse video
  2010.         03h map high intensity to selected alternate font
  2011.         B0h half intensity (Compaq)
  2012.         B1h toggle active intensity bit interpretation (CP386)
  2013. ----------1015-------------------------------
  2014. INT 10 - VIDEO - GET PHYSICAL DISPLAY PARAMETERS (CONVERTIBLE)
  2015.     AH = 15h
  2016. Return: AX = alternate display adapter type
  2017.         0000h none
  2018.         5140h LCD
  2019.         5153h CGA
  2020.         5151h mono
  2021.     ES:DI -> parameter table (see below)
  2022. SeeAlso: AH=1Bh
  2023.  
  2024. Format of display parameter table:
  2025. Offset    Size    Description
  2026.  00h    WORD    monitor model number
  2027.  02h    WORD    vertical pixels per meter
  2028.  04h    WORD    horizontal pixels per meter
  2029.  06h    WORD    total vertical pixels
  2030.  08h    WORD    total horizontal pixels
  2031.  0Ah    WORD    horizontal pixel separation in micrometers
  2032.  0Ch    WORD    vertical pixel separation in micrometers
  2033. ----------1015-------------------------------
  2034. INT 10 - VIDEO - SET SUPERIMPOSE MODE (Sperry PC)
  2035.     AH = 15h
  2036.     AL = superimpose mode
  2037.         00h show graphics screen
  2038.         01h show text screen
  2039.         02h show text screen superimposed on graphics screen
  2040. ----------101A-------------------------------
  2041. INT 10 - VIDEO - DISPLAY COMBINATION (PS,VGA/MCGA)
  2042.     AH = 1Ah
  2043.     AL = 00h read display combination code
  2044.         Return: BL = active display code (see below)
  2045.             BH = alternate display code
  2046.          01h set display combination code
  2047.         BL = active display code (see below)
  2048.         BH = alternate display code
  2049. Return: AL = 1Ah if function was supported
  2050.  
  2051. Values for display combination code:
  2052.     00h no display
  2053.     01h monochrome adapter w/ monochrome display
  2054.     02h CGA w/ color display
  2055.     03h reserved
  2056.     04h EGA w/ color display
  2057.     05h EGA w/ monochrome display
  2058.     06h PGA w/ color display
  2059.     07h VGA w/ monochrome analog display
  2060.     08h VGA w/ color analog display
  2061.     09h reserved
  2062.     0Ah MCGA w/ digital color display
  2063.     0Bh MCGA w/ monochrome analog display
  2064.     0Ch MCGA w/ color analog display
  2065.     FFh unknown display type
  2066. ----------101B-------------------------------
  2067. INT 10 - VIDEO - FUNCTIONALITY/STATE INFORMATION (PS,VGA/MCGA)
  2068.     AH = 1Bh
  2069.     BX = implementation type
  2070.         0000h return funtionality/state information
  2071.     ES:DI -> 64 byte buffer for state information (see below)
  2072. Return: AL = 1Bh if function supported
  2073.         ES:DI buffer filled with state information
  2074. SeeAlso: AH=15h
  2075.  
  2076. Format of state information:
  2077. Offset    Size    Description
  2078.  00h    DWORD    address of static funtionality table (see below)
  2079.  04h    BYTE    video mode in effect
  2080.  05h    WORD    number of columns
  2081.  07h    WORD    length of regen buffer in bytes
  2082.  09h    WORD    starting address of regen buffer
  2083.  0Bh    WORD    cursor position for page 0
  2084.  0Dh    WORD    cursor position for page 1
  2085.  0Fh    WORD    cursor position for page 2
  2086.  11h    WORD    cursor position for page 3
  2087.  13h    WORD    cursor position for page 4
  2088.  15h    WORD    cursor position for page 5
  2089.  17h    WORD    cursor position for page 6
  2090.  19h    WORD    cursor position for page 7
  2091.  1Bh    WORD    cursor type
  2092.  1Dh    BYTE    active display page
  2093.  1Eh    WORD    CRTC port address
  2094.  20h    BYTE    current setting of register (3?8)
  2095.  21h    BYTE    current setting of register (3?9)
  2096.  22h    BYTE    number of rows
  2097.  23h    WORD    bytes/character
  2098.  25h    BYTE    display combination code of active display
  2099.  26h    BYTE    DCC of alternate display
  2100.  27h    WORD    number of colors supported in current mode
  2101.  29h    BYTE    number of pages supported in current mode
  2102.  2Ah    BYTE    number of scan lines active
  2103.         (0,1,2,3) = (200,350,400,480)
  2104.  2Bh    BYTE    primary character block
  2105.  2Ch    BYTE    secondary character block
  2106.  2Dh    BYTE    miscellaneous flags
  2107.         bit 0 all modes on all displays on
  2108.             1 gray summing on
  2109.             2 monochrome display attached
  2110.             3 default palette loading disabled
  2111.             4 cursor emulation enabled
  2112.             5 0 = intensity; 1 = blinking
  2113.             6 PS/2 P70 plasma display (without 9-dot wide font) active
  2114.             7 reserved
  2115.  2Eh  3 BYTEs    reserved (00h)
  2116.  31h    BYTE    video memory available
  2117.         00h = 64K, 01h = 128K, 02h = 192K, 03h = 256K
  2118.  32h    BYTE    save pointer state flags
  2119.         bit 0 512 character set active
  2120.             1 dynamic save area present
  2121.             2 alpha font override active
  2122.             3 graphics font override active
  2123.             4 palette override active
  2124.             5 DCC override active
  2125.             6 reserved
  2126.             7 reserved
  2127.  33h 13 BYTEs    reserved (00h)
  2128.  
  2129. Format of Static Functionality Table:
  2130. Offset    Size    Description
  2131.  00h    BYTE    modes supported #1
  2132.         bit 0 to bit 7 = 1 modes 0,1,2,3,4,5,6 supported
  2133.  01h    BYTE    modes supported #2
  2134.         bit 0 to bit 7 = 1 modes 8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh supported
  2135.  02h    BYTE    modes supported #3
  2136.         bit 0 to bit 3 = 1 modes 10h,11h,12h,13h supported
  2137.         bit 4 to bit 7 reserved
  2138.  03h  4 BYTEs    reserved
  2139.  07h    BYTE    scan lines supported
  2140.         bit 0 to bit 2 = 1 if scan lines 200,350,400 supported
  2141.  08h    BYTE    total number of character blocks available in text modes
  2142.  09h    BYTE    maximum number of active character blocks in text modes
  2143.  0Ah    BYTE    miscellaneous function flags #1
  2144.         bit 0 all modes on all displays function supported
  2145.             1 gray summing function supported
  2146.             2 character font loading function supported
  2147.             3 default palette loading enable/disable supported
  2148.             4 cursor emulation function supported
  2149.             5 EGA palette present
  2150.             6 color palette present
  2151.             7 color paging function supported
  2152.  0Bh    BYTE    miscellaneous function flags #2
  2153.         bit 0 light pen supported
  2154.             1 save/restore state function 1Ch supported
  2155.             2 intensity blinking function supported
  2156.             3 Display Combination Code supported
  2157.           4-7 reserved
  2158.  0Ch    WORD    reserved
  2159.  0Eh    BYTE    save pointer function flags
  2160.         bit 0 512 character set supported
  2161.             1 dynamic save area supported
  2162.             2 alpha font override supported
  2163.             3 graphics font override supported
  2164.             4 palette override supported
  2165.             5 DCC extension supported
  2166.             6 reserved
  2167.             7 reserved
  2168.  0Fh    BYTE    reserved
  2169. ----------101C-------------------------------
  2170. INT 10 - VIDEO - SAVE/RESTORE VIDEO STATE (PS50+,VGA)
  2171.     AH = 1Ch
  2172.     AL = 00h return state buffer size
  2173.         Return: BX = number of 64-byte blocks needed
  2174.          01h save video state
  2175.         ES:BX -> buffer
  2176.          02h restore video state
  2177.         ES:BX -> buffer containing previously saved state
  2178.     CX = requested states
  2179.          bit 0 video hardware
  2180.          1 BIOS data areas
  2181.          2 color registers and DAC state
  2182.           3-15 reserved
  2183. Return: AL = 1Ch if function supported
  2184. Notes:    many BIOSes corrupt the video registers when saving the state, so a
  2185.       program should restore the state immediately after saving it (the
  2186.       saved data is uncorrupted)
  2187.     the BIOS data area consists of the 96 bytes from 0040h:0049h-00A8h
  2188.  
  2189. Format of video hardware state:
  2190. Offset    Size    Description
  2191.  00h    BYTE    sequencer index register
  2192.  01h    BYTE    CRTC index register
  2193.  02h    BYTE    graphics controller index register
  2194.  03h    BYTE    attribute controller index register
  2195.  04h    BYTE    feature controller register
  2196.  05h  4 BYTEs    sequencer registers
  2197.  09h    BYTE    sequencer register 0
  2198.  0Ah 25 BYTEs    CRTC registers 0-8
  2199.  23h 16 BYTEs    palette registers 00h-0Fh
  2200.  33h  4 BYTEs    attribute registers 10h-13h
  2201.  37h  9 BYTEs    graphics controller registers 0-8
  2202.  40h    BYTE    CRTC base address (low)
  2203.  41h    BYTE    CRTC base address (high)
  2204.  42h    BYTE    plane 0 latch
  2205.  43h    BYTE    plane 1 latch
  2206.  44h    BYTE    plane 2 latch
  2207.  45h    BYTE    plane 3 latch
  2208.  
  2209. Format of DAC state:
  2210. Offset    Size    Description
  2211.  00h    BYTE    read/write mode DAC
  2212.  01h    BYTE    pixel address
  2213.  02h    BYTE    pixel mask
  2214.  03h 768 BYTEs    color data (256 triples)
  2215. 303h    BYTE    color select register
  2216. ----------101D-------------------------------
  2217. INT 10 - Tseng ET-4000 BIOS v3.00 - BUG
  2218.     AH = 1Dh
  2219. Note:    this version of the BIOS jumps to a random location on this function
  2220.       due to a fencepost error
  2221. ---------------------------------------------
  2222. INT 10 - VIDEO - XGA - GET DMQS (Display Mode Query and Set) DATA LENGTH
  2223.     AX = 1F00h
  2224. Return: AL = 1Fh if supported
  2225.         BX = number of bytes of DMQS data
  2226. Note:    not supported on the original IBM XGA, only on XGA-NI (non-interlaced)
  2227.       and later models.
  2228. SeeAlso: AX=1F01h
  2229. ---------------------------------------------
  2230. INT 10 - VIDEO - XGA - READ DMQS DATA
  2231.     AX = 1F01h
  2232.     ES:DI -> user buffer for return data (call AH=1F00 for size)
  2233. Return: AL = 1Fh if function supported
  2234.     user buffer filled with DMQS data, see below.
  2235. Note:    not supported on the original IBM XGA, only on XGA-NI (non-interlaced)
  2236.       and later models.
  2237. SeeAlso: AX=1F00h
  2238.  
  2239. Format of DMQS buffer:
  2240. Offset    Size    Description
  2241.  00h    WORD    offset (in bytes) to DMQS data for next XGA instance
  2242.  02h    BYTE    slot number
  2243.  03h    BYTE    XGA implementation function level identifier
  2244.  04h    BYTE    XGA implementation resolution level identifier
  2245.  05h    WORD    vendor identifier - identifies card vendor
  2246.  07h    WORD    vendor defined field
  2247.  09h    WORD    XGA adapter I/O register base address
  2248.  0Bh    WORD    XGA coprocessor register base address
  2249.         (Paragraph---multiply by 10h to get physical address)
  2250.  0Dh    WORD    1 Megabyte system video memory aperture
  2251.         0000h if not allocated
  2252.         (Multiply by 100000h to get physical address)
  2253.  0Fh    WORD    4 Megabyte system video memory aperture
  2254.         0000h if not allocated
  2255.         (Multiply by 100000h to get physical address)
  2256.  11h    WORD    video memory base address
  2257.         (Multiply by 100000h to get physical address)
  2258.  13h    WORD    composite ID of the attached display
  2259.  15h    BYTE    amount of video memory available, in multiples of 256K 
  2260. bytes
  2261.  16h    DWORD    alternate XGA coprocessor register base address.  0 = 
  2262. none.
  2263.  1Ah    var    DMQS Data for further XGA Instances (as above)
  2264. Note:    "Instances" refers to the capability of having up to 8 XGA 
  2265.       adapters in one computer.
  2266. ----------103000CX0000-----------------------
  2267. INT 10 - VIDEO - LOCATE 3270PC CONFIGURATION TABLE (INSTALLATION CHECK)
  2268.     AX = 3000h
  2269.     CX = 0000h
  2270.     DX = 0000h
  2271. Return: CX:DX -> 3270PC configuration table (see below)
  2272.     CX:DX = 0000h:0000h if 3270PC Control Program not active
  2273.  
  2274. Format of 3270 PC configuration table:
  2275. Offset    Size    Description
  2276.  00h    BYTE    aspect ratio X
  2277.  01h    BYTE    aspect ratio Y
  2278.  02h    BYTE    monitor type
  2279.         00h = 5151 (mono) or 5272 (color)
  2280.         01h = 3295
  2281.         02h = 5151 or 5272 with XGA (???) graphics adapter
  2282.         03h = 5279 with 3270PC G adapter
  2283.         04h = 5379 model C01 with 3270PC GX adapter
  2284.         05h = 5379 model M01 with 3270PC GX adapter
  2285.         07h = non-3270PC with 3270 Workstation Program
  2286.         FFh = 3270PC Control Program not loaded
  2287.  03h    BYTE    reserved
  2288.  04h    BYTE    adapter ID
  2289.         00h = 5151/5272 adapter
  2290.         04h = 5151/5272 with XGA adapter
  2291.         30h = 3295 or 3270PC G/GX adapter
  2292.  05h    BYTE    reserved
  2293.  06h    BYTE    function flags 1
  2294.         bit 7: mono text, 1 page
  2295.             6: color text, 1 page
  2296.             5: color text, 4 pages
  2297.             4: CGA color graphics
  2298.             3: 720x350 two-color graphics
  2299.             2: 360x350 four-color graphics
  2300.             1: 720x350 eight-color graphics
  2301.  07h    BYTE    function flags 2
  2302.         bit 6: GPI graphics supported
  2303.  08h    WORD    segment address of Control Program Level table (see below)
  2304.  0Ah 10 BYTEs    reserved
  2305.  
  2306. Format of Control Program Level table:
  2307. Offset    Size    Description
  2308.  00h    WORD    program version
  2309.         02xxh = 3270PC Control Program v2.xx
  2310.         03xxh = 3270PC Control Program v3.xx
  2311.         04xxh = 3270 Workstation Program v1.xx
  2312.  02h    BYTE    Control Program ID (00h)
  2313.  03h 27 BYTEs    Control Program Descriptor ("IBM 3270 PC CONTROL PROGRAM")
  2314. ----------1038-------------------------------
  2315. INT 10 - Tinytalk Personal v1.09f - GET CONFIGURATION INFO
  2316.     AH = 38h
  2317. Return: ES:DI -> configuration info (see below)
  2318. Notes:    Tinytalk is a shareware screen reader by OMS Development/Eric Bohlman
  2319.     this call is also used as the installation check by verifying that the
  2320.       returned ES:DI points at valid configuration info
  2321. SeeAlso: INT 14/AX=F0F1h,INT 2F/FB00h"AutoBraille"
  2322.  
  2323. Format of configuration info:
  2324. Offset    Size    Description
  2325.  00h  8 BYTEs    signature "TTCONFIG"
  2326.  08h    WORD    size of configuration data, not counting signature, this WORD,
  2327.         or the following byte
  2328.  0Ah    BYTE    ???
  2329.  0Bh    ???    configuration data
  2330. ----------1040-------------------------------
  2331. INT 10 - VIDEO - SET GRAPHICS MODE (Hercules GRAFIX)
  2332.     AH = 40h
  2333. SeeAlso: AH=00h,AH=41h
  2334. ----------1041-------------------------------
  2335. INT 10 - VIDEO - SET TEXT MODE (Hercules GRAFIX)
  2336.     AH = 41h
  2337. SeeAlso: AH=00h,AH=40h
  2338. ----------1042-------------------------------
  2339. INT 10 - VIDEO - CLEAR CURRENT PAGE (Hercules GRAFIX)
  2340.     AH = 42h
  2341. SeeAlso: AH=45h
  2342. ----------1043-------------------------------
  2343. INT 10 - VIDEO - SELECT DRAWING PAGE (Hercules GRAFIX)
  2344.     AH = 43h
  2345.     AL = page number (0,1)
  2346. SeeAlso: AH=05h,AH=44h,AH=45h
  2347. ----------1044-------------------------------
  2348. INT 10 - VIDEO - SELECT DRAWING FUNCTION (Hercules GRAFIX)
  2349.     AH = 44h
  2350.     AL = drawing function
  2351.         00h clear pixels
  2352.         01h set pixels
  2353.         02h invert pixels
  2354. SeeAlso: AH=45h,AH=46h,AH=4Ch,AH=4Dh
  2355. ----------1045-------------------------------
  2356. INT 10 - VIDEO - SELECT PAGE TO DISPLAY (Hercules GRAFIX)
  2357.     AH = 45h
  2358.     AL = page number (0,1)
  2359. SeeAlso: AH=05h,AH=42h,AH=43h
  2360. ----------1046-------------------------------
  2361. INT 10 - VIDEO - DRAW ONE PIXEL (Hercules GRAFIX)
  2362.     AH = 46h
  2363.     DI = x (0-720)
  2364.     BP = y (0-347)
  2365. Note:    function 44h determines operation and function 43h which page to use
  2366. SeeAlso: AH=0Ch,AH=47h,AH=49h,AH=4Ch,AH=4Dh
  2367. ----------1047-------------------------------
  2368. INT 10 - VIDEO - FIND PIXEL VALUE (Hercules GRAFIX)
  2369.     AH = 47h
  2370.     DI = x (0-720)
  2371.     BP = y (0-347)
  2372. Return: AL = 00h pixel clear
  2373.     AL = 01h pixel set
  2374. Note:    function 43h specifies which page is used
  2375. SeeAlso: AH=0Dh,AH=46h
  2376. ----------1048-------------------------------
  2377. INT 10 - VIDEO - MOVE TO POINT (Hercules GRAFIX)
  2378.     AH = 48h
  2379.     DI = x (0-720)
  2380.     BP = y (0-347)
  2381. SeeAlso: AH=49h
  2382. ----------1049-------------------------------
  2383. INT 10 - VIDEO - DRAW TO POINT (Hercules GRAFIX)
  2384.     AH = 49h
  2385.     DI = x (0-720)
  2386.     BP = y (0-347)
  2387. Note:    function 48h or 49h specify first point, 44h operation and 43h page to
  2388.       use
  2389. SeeAlso: AH=43h,AH=44h,AH=48h,AH=4Ch,AH=4Dh
  2390. ----------104A-------------------------------
  2391. INT 10 - VIDEO - BLOCK FILL (Hercules GRAFIX)
  2392.     AH = 4Ah
  2393.     DI = x coordinate of lower left corner
  2394.     BP = y coordinate of lower left corner
  2395.     BX = height in pixels
  2396.     CX = width in pixels
  2397. Note:    draws a solid rectangle
  2398. SeeAlso: AH=4Eh
  2399. ----------104B-------------------------------
  2400. INT 10 - VIDEO - DISPLAY CHARACTER (Hercules GRAFIX)
  2401.     AH = 4Bh
  2402.     AL = character to display
  2403.     DI = x (0-720)
  2404.     BP = y (0-347)
  2405. Note:    unlike the other BIOS character functions character position is
  2406.       specified in pixels rather than rows and columns
  2407. SeeAlso: AH=09h,AH=0Ah
  2408. ----------104B-------------------------------
  2409. INT 10 - FRIEZE v7.0+ - API
  2410.     AH = 4Bh
  2411.     CL = function
  2412.         00h reserved
  2413.         01h load window
  2414.         ES:BX -> ASCIZ filename from which to read
  2415.         02h save window
  2416.         ES:BX -> ASCIZ filename to which to write
  2417.         03h (v7.41) set ???
  2418.         AL = ???
  2419.         04h (v7.41) set ???
  2420.         AL = ???
  2421.         06h (v7.41) ???
  2422.         AL = ???
  2423.         07h set window size
  2424.         ES:BX -> four-WORD structure with Xmin, Ymin, Xmax, Ymax
  2425.         09h set patterns
  2426.         ES:BX -> 16-BYTE vector of screen->printer color correspondnces
  2427.         0Ah get patterns
  2428.         ES:BX -> 16-BYTE buffer for color correspondences
  2429.         0Bh set mode
  2430.         AL = mode
  2431.         0Ch (v7.41) ???
  2432.         AL = ???
  2433.             00h ??? (calls original INT 05)
  2434.             else ???
  2435.         0Dh (v7.41) ???
  2436.         AL = ???
  2437.             00h ??? (calls original INT 05)
  2438.             else ???
  2439.         0Eh (v7.41) ???
  2440.         ???
  2441.         0Fh get window
  2442.         ES:BX -> four-WORD buffer for Xmin, Ymin, Xmax, Ymax
  2443.         10h set print options
  2444.         ES:BX -> printer options in same format as FRIEZE cmdline
  2445.         11h (v7.41) ???
  2446.         ???
  2447.         12h (v7.41) ???
  2448.         ???
  2449.         13h (v7.41) ???
  2450.         ???
  2451.         14h get version
  2452.         Return: AH = major version (00h if FRIEZE version before 7)
  2453.             AL = minor version
  2454.         15h set parameters
  2455.         ES:BX -> parameter table (see below)
  2456.         16h get parameters
  2457.         ES:BX -> buffer for parameter table (see below)
  2458.         17h get printer resolution
  2459.         ES:BX -> 12-WORD table for six horizontal/vertical resol pairs
  2460.         18h reserved (v8.0 only)
  2461.         50h (v7.41) get ???
  2462.         Return: AX = ???
  2463.         51h (v7.41) get ???
  2464.         Return: ES = ??? (seen 2348h)
  2465.             AX = ??? (seen 8432h)
  2466. Return: AX = status
  2467.         00h successful
  2468.         01h user aborted printout with ESC
  2469.         02h reserved
  2470.         03h file read error
  2471.         04h file write error
  2472.         05h file not found
  2473.         06h invalid header (not an image or wrong screen mode)
  2474.         07h file close error
  2475.         08h disk error
  2476.         09h printer error
  2477.         0Ah invalid function
  2478.         0Bh can't create file
  2479.         0Ch wrong video mode
  2480. SeeAlso: AH=0Fh/SI=F123h
  2481.  
  2482. Format of parameter table:
  2483. Offset    Size    Description
  2484.  00h    WORD    top margin (1/100 inch)
  2485.  02h    WORD    left margin (1/100 inch)
  2486.  04h    WORD    horizontal size (1/100 inch)
  2487.  06h    WORD    vertical size (1/100 inch)
  2488.  08h    WORD    quality/draft mode
  2489.         00h draft mode
  2490.         01h quality mode
  2491.         02h use horizontal/vertical resolution for output resolution
  2492.  0Ah    WORD    printer horizontal resolution (dots per inch)
  2493.  0Ch    WORD    printer vertical resolution (dots per inch)
  2494.  0Eh    WORD    reserved (FFFFh)
  2495. Note:    any field which should remain unchanged may be filled with FFFFh
  2496. ----------104C-------------------------------
  2497. INT 10 - VIDEO - DRAW ARC (Hercules GRAFIX)
  2498.     AH = 4Ch
  2499.     AL = quadrant (1 = upper right, 2 = upper left, etc)
  2500.     DI = x coordinate of center
  2501.     BP = y coordinate of center
  2502.     BX = radius
  2503. SeeAlso: AH=49h,AH=4Dh
  2504. ----------104D-------------------------------
  2505. INT 10 - VIDEO - DRAW CIRCLE (Hercules GRAFIX)
  2506.     AH = 4Dh
  2507.     DI = x of center
  2508.     BP = y of center
  2509.     BX = radius
  2510. SeeAlso: AH=49h,AH=4Ch
  2511. ----------104E-------------------------------
  2512. INT 10 - VIDEO - FILL AREA (Hercules GRAFIX)
  2513.     AH = 4Eh
  2514.     DI = x coordinate of an interior point
  2515.     BP = y coordinate of an interior point
  2516. Notes:    fills convex polygonal areas
  2517.     the first fill makes the figure solid, the second erases it
  2518. SeeAlso: AH=4Ah
  2519. ----------104F00-----------------------------
  2520. INT 10 - VESA SuperVGA BIOS - GET SuperVGA INFORMATION
  2521.     AX = 4F00h
  2522.     ES:DI -> 256-byte buffer for SuperVGA information (see below)
  2523. Return: AL = 4Fh function supported
  2524.     AH = status
  2525.         00h successful
  2526.         01h failed
  2527. SeeAlso: AX=4F01h,AX=7F00h
  2528.  
  2529. Format of SuperVGA information:
  2530. Offset    Size    Description
  2531.  00h  4 BYTEs    signature ('VESA')
  2532.  04h    WORD    VESA version number
  2533.  06h    DWORD    pointer to OEM name
  2534.         "761295520" for ATI
  2535.  0Ah  4 BYTEs    capabilities
  2536.  0Eh    DWORD    pointer to list of supported VESA and OEM video modes
  2537.         (list of words terminated with FFFFh)
  2538.  12h 238 BYTEs    reserved
  2539. ----------104F01-----------------------------
  2540. INT 10 - VESA SuperVGA BIOS - GET SuperVGA MODE INFORMATION
  2541.     AX = 4F01h
  2542.     CX = SuperVGA video mode
  2543.     ES:DI -> 256-byte buffer mode information (see below)
  2544. Return: AL = 4Fh function supported
  2545.     AH = status
  2546.         00h successful
  2547.         01h failed
  2548. SeeAlso: AX=4F00h,AX=4F02h
  2549.  
  2550. Format of mode information:
  2551. Offset    Size    Description
  2552.  00h    WORD    mode attributes
  2553.         bit 0: mode supported
  2554.         bit 1: optional information available
  2555.         bit 2: BIOS output supported
  2556.         bit 3: set if color, clear if monochrome
  2557.         bit 4: set if graphics mode, clear if text mode
  2558.  02h    BYTE    window A attributes
  2559.         bit 0: exists
  2560.         bit 1: readable
  2561.         bit 2: writable
  2562.         bits 3-7 reserved
  2563.  03h    BYTE    window B attributes (as for window A)
  2564.  04h    WORD    window granularity in K
  2565.  06h    WORD    window size in K
  2566.  08h    WORD    start segment of window A
  2567.  0Ah    WORD    start segment of window B
  2568.  0Ch    DWORD    -> FAR window positioning function (equivalent to AX=4F05h)
  2569.  10h    WORD    bytes per scan line
  2570. ---remainder is optional for VESA modes in v1.0/1.1, needed for OEM modes---
  2571.  12h    WORD    width in pixels
  2572.  14h    WORD    height in pixels
  2573.  16h    BYTE    width of character cell in pixels
  2574.  17h    BYTE    height of character cell in pixels
  2575.  18h    BYTE    number of memory planes
  2576.  19h    BYTE    number of bits per pixel
  2577.  1Ah    BYTE    number of banks
  2578.  1Bh    BYTE    memory model type
  2579.         00h text
  2580.         01h CGA graphics
  2581.         02h HGC graphics
  2582.         03h 16-color (EGA) graphics
  2583.         04h packed pixel graphics
  2584.         05h "sequ 256" (non-chain 4) graphics
  2585.         06h direct color (HiColor, 24-bit color)
  2586.         07h YUV
  2587.         08h-0Fh reserved for VESA
  2588.         10h-FFh OEM memory models
  2589.  1Ch    BYTE    size of bank in K
  2590.  1Dh    BYTE    number of image pages
  2591.  1Eh    BYTE    reserved (0)
  2592. ---VBE v1.2+---
  2593.  1Fh    BYTE    red mask size
  2594.  20h    BYTE    red field position
  2595.  21h    BYTE    green mask size
  2596.  22h    BYTE    green field size
  2597.  23h    BYTE    blue mask size
  2598.  24h    BYTE    blue field size
  2599.  25h    BYTE    reserved mask size
  2600.  26h    BYTE    reserved mask position
  2601.  27h    BYTE    direct color mode info
  2602.  28h    BYTE    reserved (0)
  2603. ----------104F02-----------------------------
  2604. INT 10 - VESA SuperVGA BIOS - SET SuperVGA VIDEO MODE
  2605.     AX = 4F02h
  2606.     BX = mode
  2607.         bit 15 set means don't clear video memory
  2608. Return: AL = 4Fh function supported
  2609.     AH = status
  2610.         00h successful
  2611.         01h failed
  2612. SeeAlso: AX=4F01h,AX=4F03h
  2613.  
  2614. Values for VESA video mode:
  2615.  00h-FFh OEM video modes (see AH=00h)
  2616.  100h    640x400x256
  2617.  101h    640x480x256
  2618.  102h    800x600x16
  2619.  103h    800x600x256
  2620.  104h    1024x768x16
  2621.  105h    1024x768x256
  2622.  106h    1280x1024x16
  2623.  107h    1280x1024x256
  2624.  108h    80x60 text
  2625.  109h    132x25 text
  2626.  10Ah    132x43 text
  2627.  10Bh    132x50 text
  2628.  10Ch    132x60 text
  2629. ---VBE v1.2---
  2630.  10Dh    320x200x32K
  2631.  10Eh    320x200x64K
  2632.  10Fh    320x200x16M
  2633.  110h    640x480x32K
  2634.  111h    640x480x64K
  2635.  112h    640x480x16M
  2636.  113h    800x600x32K
  2637.  114h    800x600x64K
  2638.  115h    800x600x16M
  2639.  116h    1024x768x32K
  2640.  117h    1024x768x64K
  2641.  118h    1024x768x16M
  2642.  119h    1280x1024x32K
  2643.  11Ah    1280x1024x64K
  2644.  11Bh    1280x1024x16M
  2645.  
  2646. Values for S3 OEM video mode:
  2647.  201h    640x480x256
  2648.  202h    800x600x16
  2649.  203h    800x600x256
  2650.  204h    1024x768x16
  2651.  205h    1024x768x256
  2652.  206h    1280x960x16
  2653.  208h    1280x1024x16
  2654.  301h    640x480x32K
  2655. ----------104F03-----------------------------
  2656. INT 10 - VESA SuperVGA BIOS - GET CURRENT VIDEO MODE
  2657.     AX = 4F03h
  2658. Return: AL = 4Fh function supported
  2659.     AH = status
  2660.         00h successful
  2661.         01h failed
  2662.     BX = video mode (see AX=4F02h)
  2663. SeeAlso: AX=4F02h
  2664. ----------104F04-----------------------------
  2665. INT 10 - VESA SuperVGA BIOS - SAVE/RESTORE SuperVGA VIDEO STATE
  2666.     AX = 4F04h
  2667.     DL = subfunction
  2668.         00h get state buffer size
  2669.         Return: BX = number of 64-byte blocks needed
  2670.         01h save video states
  2671.         ES:BX -> buffer
  2672.         02h restore video states
  2673.         ES:BX -> buffer
  2674.     CX = flags for states to save/restore
  2675.         bit 0: video hardware state
  2676.         bit 1: video BIOS data state
  2677.         bit 2: video DAC state
  2678.         bit 3: SuperVGA state
  2679. Return: AL = 4Fh function supported
  2680.     AH = status
  2681.         00h successful
  2682.         01h failed
  2683. ----------104F05-----------------------------
  2684. INT 10 - VESA SuperVGA BIOS - CPU VIDEO MEMORY CONTROL
  2685.     AX = 4F05h
  2686.     BH = subfunction
  2687.         00h select video memory window
  2688.         DX = window address in video memory (in granularity units)
  2689.         01h get video memory window
  2690.         Return: DX = window address in video memory (in gran. units)
  2691.     BL = window number
  2692.         00h window A
  2693.         01h window B
  2694. Return: AL = 4Fh function supported
  2695.     AH = status
  2696.         00h successful
  2697.         01h failed
  2698. SeeAlso: AX=4F01h,AX=4F06h,AX=4F07h,AX=7000h/BX=0004h
  2699. ----------104F06-----------------------------
  2700. INT 10 - VESA SuperVGA BIOS v1.1 - GET/SET LOGICAL SCAN LINE LENGTH
  2701.     AX = 4F06h
  2702.     BL = function
  2703.         00h set scan line length
  2704.         CX = desired width in pixels
  2705.         01h get scan line length
  2706. Return: AL = 4Fh if function supported
  2707.     AH = status
  2708.         00h successful
  2709.         01h failed
  2710.     BX = bytes per scan line
  2711.     CX = number of pixels per scan line
  2712.     DX = maximum number of scan lines
  2713. Notes:    if the desired width is not achievable, the next larger width will be
  2714.       set
  2715.     the scan line may be wider than the visible area of the screen
  2716.     this function is valid in text modes, provided that values are
  2717.       multiplied by the character cell width/height
  2718. SeeAlso: AX=4F01h,AX=4F05h,AX=4F07h
  2719. ----------104F07BH00-------------------------
  2720. INT 10 - VESA SuperVGA BIOS v1.1 - GET/SET DISPLAY START
  2721.     AX = 4F07h
  2722.     BH = 00h (reserved)
  2723.     BL = 00h set display start
  2724.         CX = leftmost displayed pixel in scan line
  2725.         DX = first displayed scan line
  2726.        = 01h get display start
  2727.         Return: BH = 00h
  2728.             CX = leftmost displayed pixel in scan line
  2729.             DX = first displayed scan line
  2730. Return: AL = 4Fh if function supported
  2731.     AH = status
  2732.         00h successful
  2733.         01h failed
  2734. Note:    this function is valid in text modes, provided that values are
  2735.       multiplied by the character cell width/height
  2736. SeeAlso: AX=4F01h,AX=4F05h,AX=4F06h
  2737. ----------104F08-----------------------------
  2738. INT 10 - VESA SuperVGA BIOS v1.2+ - GET/SET DAC PALETTE CONTROL
  2739.     AX = 4F08h
  2740.     BL = function
  2741.         00h set DAC palette width
  2742.         BH = desired number of bits per primary color
  2743.         01h get DAC palette width
  2744. Return: AL = 4Fh if function supported
  2745.     AH = status
  2746.     BH = current number of bits per primary (06h = standard VGA)
  2747. ----------104FFF-----------------------------
  2748. INT 10 - VESA SuperVGA BIOS - Everex - TURN VESA ON/OFF
  2749.     AX = 4FFFh
  2750.     DL = new state (00h off, 01h on)
  2751. Return: AX = 0000h if successful
  2752. ----------1050-------------------------------
  2753. INT 10 - SCROLOCK.COM - INSTALLATION CHECK
  2754.     AH = 50h
  2755. Return: BX = 1954h if installed
  2756.         AL = 00 if inactive, nonzero if active
  2757. Program: SCROLOCK is a utility supplied with System Enhancement Associates' ARC
  2758. SeeAlso: AH=51h
  2759. ----------105000-----------------------------
  2760. INT 10 - VIDEO - AX PC - SET SCREEN COUNTRY CODE
  2761.     AX = 5000h
  2762.     BX = country code
  2763.         0001h USA (English), 0051h Japan
  2764. Return: AL = status
  2765.         00h successful
  2766.         01h bad country code
  2767.         02h other error
  2768. SeeAlso: AX=5001h,INT 16/AX=5000h
  2769. ----------105001-----------------------------
  2770. INT 10 - VIDEO - AX PC - GET SCREEN COUNTRY CODE
  2771.     AX = 5001h
  2772. Return: AL = status
  2773.         00h successful
  2774.         BX = country code
  2775.         02h error
  2776. SeeAlso: AH=00h,AX=5000h,INT 16/AX=5001h,INT 21/AH=38h
  2777. ----------105049-----------------------------
  2778. INT 10 - VIDEO - SCREENR v1.55+ - API
  2779.     AX = 5049h ('PI')
  2780.     BX = function
  2781.         0000h installation check
  2782.         0001h lock mode
  2783.         0002h unlock mode
  2784.         0003h lock palette
  2785.         0004h unlock palette
  2786. Return: AX = 0000h if installed
  2787.         BX = TSR version (BH=major,BL=minor)
  2788.         CL = mode locking status
  2789.         00h mode not locked
  2790.         01h mode locked : INT 10/AH=00h disabled
  2791.         CH = palette locking status
  2792.         00h palette not locked
  2793.         01h palette locked, the following functions are disabled:
  2794.             AX=1000h, AX=1001h, AX=1002h, AX=1010h, AX=1012h
  2795. Program: SCREENR is a TSR supplied with Patrick Ibbetson's SCREEN display
  2796.       utility.
  2797. ----------1051-------------------------------
  2798. INT 10 - SCROLOCK.COM - ENABLE/DISABLE
  2799.     AH = 51h
  2800.     AL = state
  2801.         00h disable
  2802.         nonzero enable
  2803. Program: SCROLOCK is a utility supplied with System Enhancement Associates' ARC
  2804. SeeAlso: AH=50h"SCROLOCK"
  2805. ----------105100-----------------------------
  2806. INT 10 - VIDEO - AX PC - REGISTER EXTERNAL CHARACTER
  2807.     AX = 5100h
  2808.     BH = character width in bits (10h)
  2809.     BL = character height (10h)
  2810.     DX = character code (DH = F0h-F3h, DL=40h-7Eh,80h-FCh)
  2811.     ES:BP -> character bitmap
  2812. Return: AL = status (00h successful, 01h failed)
  2813. SeeAlso: AX=5101h,INT 1F
  2814. ----------105101-----------------------------
  2815. INT 10 - VIDEO - AX PC - READ CHARACTER
  2816.     AX = 5101h
  2817.     BH = character width in bits
  2818.     BL = character height
  2819.     DX = character code (DH = 00h if 8-bit character)
  2820.     ES:BP -> buffer for character bitmap
  2821. Return: AL = status (00h successful, 01h failed)
  2822. SeeAlso: AH=09h,AX=5100h
  2823. ----------105200-----------------------------
  2824. INT 10 - VIDEO - AX PC - SET VIRTUAL TEXT RAM BUFFER
  2825.     AX = 5200h
  2826.     BX = segment of buffer
  2827. SeeAlso: AX=5201h
  2828. ----------105201-----------------------------
  2829. INT 10 - VIDEO - AX PC - GET VIRTUAL TEXT RAM BUFFER
  2830.     AX = 5201h
  2831. Return: BX = segment of buffer or 0000h if failed
  2832. SeeAlso: AX=8300h,AH=FEh
  2833. ----------1053-------------------------------
  2834. INT 10 - Show Partner F/X v3.6 - START PRESENTATION
  2835.     AH = 53h
  2836.     DS:DX -> ASCIZ name of presentation file (no path, extension forced to
  2837.         .PR2)
  2838. Return: ???
  2839. SeeAlso: AH=55h
  2840. ----------1055-------------------------------
  2841. INT 10 - Show Partner F/X v3.6 - UNINSTALL
  2842.     AH = 55h
  2843. Return: FXSHOW.EXE removed from memory
  2844. SeeAlso: AH=53h
  2845. ----------105555-----------------------------
  2846. INT 10 - VIDEO - ATI EGA/VGA Wonder Super Switch - INSTALLATION CHECK
  2847.     AX = 5555h
  2848. Return: AX = AAAAh    if installed
  2849.     BX:CX -> ??? routine in SMS.COM resident portion
  2850.           -> data area in VCONFIG
  2851. Program: Super Switch (SMS.COM) is a video mode switch program supplied with
  2852.       ATI EGA Wonder. It also maps video mode 08h to 27h or 23h.
  2853. SeeAlso: INT 10/AH=00h,INT 2F/AX=6400h
  2854.  
  2855. Format of data area:
  2856. Offset    Size    Description
  2857.  00h    DWORD    original INT 09 vector
  2858.  04h    DWORD    original INT 10 vector
  2859.  08h    DWORD    original INT 1C vector
  2860.  0Ch    WORD    screen saver state, 0=off, 1=on
  2861.  0Eh    WORD    blanking interval in clock ticks
  2862. ----------106A00BX0000-----------------------
  2863. INT 10 - Direct Graphics Interface Standard (DGIS) - INQUIRE AVAILABLE DEVICES
  2864.     AX = 6A00h
  2865.     BX = 0000h
  2866.     CX = 0000h
  2867.     DX = buffer length (may be 0)
  2868.     ES:DI -> buffer
  2869. Return: BX = number of bytes stored in buffer
  2870.     CX = bytes required for all descriptions (0 if no DGIS)
  2871. Note:    buffer contains descriptions and addresses of DGIS-compatible
  2872.       display(s) and printer(s)
  2873. SeeAlso: AX=6A02h
  2874. ----------106A01CX0000-----------------------
  2875. INT 10 - DGIS - REDIRECT CHARACTER OUTPUT
  2876.     AX = 6A01h
  2877.     CX = 0000h
  2878.     ES:DI = address of device to send INT 10 output to
  2879. Return: CX = 0000h  output could not be redirected
  2880.          else INT 10h output now routed to requested display
  2881. SeeAlso: AX=6A02h
  2882. ----------106A02-----------------------------
  2883. INT 10 - DGIS - INQUIRE INT 10 OUTPUT DEVICE
  2884.     AX = 6A02h
  2885.     ES:DI = 0000h:0000h
  2886. Return: ES:DI = 0000h:0000h  if current display is non-DGIS
  2887.         else address of the current DGIS INT 10 display
  2888. SeeAlso: AX=6A00h,AX=6A01h
  2889. ----------106E00------------------------------------
  2890. INT 10 - Paradise VGA internal - GET ???
  2891.     AX = 6E00h
  2892. Return: AH = ??? (depends on serial number)
  2893.     AL = ???
  2894.     BX = ???
  2895.     CL = ???
  2896.     CH = ???
  2897.     DX = ???
  2898. SeeAlso: AX=6E04,AX=6E05
  2899. ----------106E04-------------------------------------
  2900. INT 10 - Paradise VGA internal - GET SCREEN SIZE AND ???
  2901.     AX = 6E04h
  2902. Return: BX = screen width (columns)
  2903.     CX = screen height (lines)
  2904.     AH = ??? (05h or FFh)
  2905.     AL = ??? (04h or video mode)
  2906. SeeAlso: AX=6E00,AX=6E05
  2907. ----------106E05-------------------------------------
  2908. INT 10 - Paradise VGA internal - SET MODE
  2909.     AX = 6E05h
  2910.     BL = mode
  2911. Note:    like AH=0, AL=BL.
  2912. SeeAlso: AH=00,AX=6E00,AX=6E04,AX=6F05h
  2913. ----------106F00-----------------------------
  2914. INT 10 - VIDEO - Video7 VGA,VEGA VGA,HP Ext BIOS - INSTALLATION CHECK
  2915.     AX = 6F00h
  2916.     BX = 0000h
  2917. Return: BX = 5637h ('V7') indicates Video7 VGA/VEGA VGA extensions are present
  2918.     BX = 4850h ('HP') indicates HP Extended BIOS video functions present
  2919. SeeAlso: AX=6F01h,AX=6F02h,AX=6F03h,AX=6F04h,AX=6F05h
  2920. ----------106F01-----------------------------
  2921. INT 10 - VIDEO - Video7 VGA,VEGA VGA,HP Ext BIOS - GET MONITOR INFO
  2922.     AX = 6F01h
  2923. Return: AL = monitor type code (HP,VEGA VGA only) (see below)
  2924.     AH = status register information
  2925.          bit  0 = display enable
  2926.             0 = display enabled
  2927.             1 = vertical or horizontal retrace in progress
  2928.          bit  1 = light pen flip flop set
  2929.          bit  2 = light pen switch activated
  2930.          bit  3 = vertical sync
  2931.          bit  4 = monitor resolution
  2932.             0 = high resolution (>200 lines)
  2933.             1 = low resolution (<=200 lines)
  2934.          bit  5 = display type
  2935.             0 = color
  2936.             1 = monochrome
  2937.          bits6,7= diagnostic bits
  2938.     CL = current value of Extended Control register (HP Ext BIOS, and only
  2939.         if AL=41h)
  2940. Note:    bits 0-3 are the same as the EGA/VGA status register bits 0-3
  2941.  
  2942. Values for monitor type code (HP Extended BIOS):
  2943.  00h    non-HP card with ROM and possibly its own INT 10h driver
  2944.  41h    MultiMode video display adapter
  2945.  42h-44h reserved
  2946.  45h    industry standard monochrome display adapter
  2947.  46h    industry standard color display adapter
  2948.  51h    reserved
  2949. ---------------------------------------------
  2950. INT 10 - VIDEO - HP Vetra EXTENDED BIOS - SET MONITOR INFO
  2951.     AX = 6F02h
  2952.     BL = new value for extende dcontrol register
  2953.         bit 0: screen resolution (0 = 200 lines, 1 = 400 lines)
  2954.         bit 1: underline enable (if set, 'blue' bit of fg color = underl)
  2955.         bit 2: font (0 = Standard-8, 1 = HP-Roman-8)
  2956.         bit 3: memory disabled for CPU access
  2957.         bit 4: allow access to full 32K memory instead of wrapping at 16K
  2958.         bit 5: select second 16K page instead of first
  2959.         bits 6,7 unused
  2960. Return:    nothing
  2961. Notes:    this function is only valid when an HP MultiMode Video Display Adapter
  2962.       is installed
  2963.     the Extended Control register is at I/O address 3DDh
  2964. SeeAlso: AX=6F01h,AX=6F03h
  2965. ---------------------------------------------
  2966. INT 10 - VIDEO - HP Vectra EXTENDED BIOS - MODIFY MONITOR INFO
  2967.     AX = 6F03h
  2968.     BH = exclude mask (set bits are not modified)
  2969.     BL = new values for bits indicated by BH (see AX=6F02h)
  2970. Return:    nothing
  2971. Note:    this function is only valid when an HP MultiMode Video Display Adapter
  2972.       is installed
  2973. SeeAlso: AX=6F01h,AX=6F02h
  2974. ----------106F04-----------------------------
  2975. INT 10 - VIDEO - Video7 VGA,VEGA VGA,HP Vectra - GET MODE AND SCREEN RESOLUTION
  2976.     AX = 6F04h
  2977. Return: AL = current video mode (see AX=6F05h)
  2978.     BX = horizontal columns (text) or pixels (graphics)
  2979.     CX = vertical columns (text) or pixels (graphics)
  2980. SeeAlso: AX=6F05h
  2981. ----------106F05-----------------------------
  2982. INT 10 - VIDEO - Video7 VGA, VEGA EXTENDED EGA/VGA - SET VIDEO MODE
  2983.     AX = 6F05h
  2984.     BL = mode (see below)
  2985. Notes:    also supported by the HP Vectra Extended BIOS
  2986.     on the HP Vectra, this function rather than AH=00h must be used to
  2987.       return to an IBM-standard mode after setting an HP-specified mode
  2988.       from 08h to 0Fh.
  2989. SeeAlso: AH=00h,AX=0070h,AX=007Eh,AX=6F04h
  2990.  
  2991. Values for video mode:
  2992.       text/ text pixel     pixel    colors    disp    scrn  system
  2993.       grph resol  box    resoltn        page    addr
  2994.  00h-13h = standard IBM modes (see AH=00h)
  2995.  08h = T   80x27           mono             HP MultiMode Video 
  2996.  09h = T   80x27                     HP MultiMode Video 
  2997.  0Ah = T   40x27           mono             HP MultiMode Video 
  2998.  0Bh = T   40x27                     HP MultiMode Video 
  2999.  0Ch = Reserved                         HP MultiMode Video 
  3000.  0Dh = G        640x400                 HP MultiMode Video 
  3001.  0Eh = G        320x400                 HP MultiMode Video 
  3002.  0Fh = G        320x400                 HP MultiMode Video 
  3003.  40h = T   80x43  8x8                     Video7/VEGA VGA
  3004.  41h = T  132x25  8x14                     Video7/VEGA VGA
  3005.  42h = T  132x43  8x8                     Video7/VEGA VGA
  3006.  43h = T   80x60  8x8                     Video7/VEGA VGA
  3007.  44h = T  100x60  8x8                     Video7/VEGA VGA
  3008.  45h = T  132x28  8x8                     Video7/VEGA VGA
  3009.  60h = G        752x410      16             Video7 VGA, VEGA VGA
  3010.  61h = G        720x540      16             Video7 VGA, VEGA VGA
  3011.      = G        720x540      16             Northgate, Headland 1024i
  3012.  62h = G        800x600      16             Video7 VGA, VEGA Ext EGA
  3013.      = G        800x600      16             Headland 1024i
  3014.  63h = G           1024x768       2             Video7 VGA
  3015.  64h = G           1024x768       4             Video7 VGA
  3016.  65h = G           1024x768      16             Video7 VGA, VEGA Ext EGA
  3017.      = G           1024x768      16             Headland 1024i
  3018.  66h = G        640x400     256             Video7 VGA, VEGA Ext VGA
  3019.      = G        640x400     256             Northgate, Headland 1024i
  3020.  67h = G        640x480     256             Video7 VGA, VEGA Ext VGA
  3021.      = G        640x480     256             Headland 1024i
  3022.  68h = G        720x540     256             Video7 VGA, VEGA Ext VGA
  3023.      = G        720x540     256             Headland 1024i
  3024.  69h = G        800x600     256             Video7 VGA, VEGA Ext VGA
  3025.      = G        800x600     256             Headland 1024i
  3026.  70h = G        752x410      16gray         Video7 VGA, VEGA VGA
  3027.  71h = G        720x540      16gray         Video7 VGA, VEGA VGA
  3028.  72h = G        800x600      16gray         Video7 VGA
  3029.  73h = G           1024x768       2gray         Video7 VGA
  3030.  74h = G           1024x768       4gray         Video7 VGA
  3031.  75h = G           1024x768      16gray         Video7 VGA
  3032.  76h = G        640x400     256gray         Video7 VGA
  3033.  77h = G        640x480     256gray         Video7 VGA
  3034.  78h = G        720x540     256gray         Video7 VGA
  3035.  79h = G        800x600     256gray         (future)
  3036. SeeAlso: AH=00h,AX=0070h,AX=007Eh,AX=6F04h
  3037. ----------106F06-----------------------------
  3038. INT 10 - VIDEO - Video7 VGA,VEGA VGA - SELECT AUTOSWITCH MODE
  3039.     AX = 6F06h
  3040.     BL = Autoswitch mode select
  3041.          00h select EGA/VGA-only modes
  3042.          01h select Autoswitched VGA/EGA/CGA/MGA modes
  3043.          02h select 'bootup' CGA/MGA modes
  3044.     BH = enable/disable (00h enable, 01h = disable selection)
  3045. ----------106F07-----------------------------
  3046. INT 10 - VIDEO -  Video7 VGA,VEGA VGA - GET VIDEO MEMORY CONFIGURATION
  3047.     AX = 6F07h
  3048. Return: AL = 6Fh
  3049.     AH = bits 0-6 = number of 256K blocks of video memory
  3050.          bit 7    = DRAM/VRAM (0: DRAM, 1: VRAM)
  3051.     BH = chip revision (SR8F) (S/C Chip in VEGA VGA)
  3052.     BL = chip revision (SR8E) (G/A Chip in VEGA VGA)
  3053.     CX = 0000h
  3054. SeeAlso: AH=12h/BL=10h
  3055. ----------1070-------------------------------
  3056. INT 10 - VIDEO - TANDY 2000 only - GET ADDRESS OF VIDEO RAM
  3057.     AH = 70h
  3058. Return: AX:BX -> WORD containing green plane's offset
  3059.     AX:CX -> WORD containing green plane's segment
  3060.     AX:DX -> WORD containing segment of red (offset 0) and blue (offset
  3061.             4000) planes
  3062. SeeAlso: AH=71h
  3063. ----------107000BX0000-----------------------
  3064. INT 10 - Everex Extended Video BIOS - RETURN EMULATION STATUS
  3065.     AX = 7000h
  3066.     BX = 0000h
  3067. Return: AL = 70h if Trident-based Everex card
  3068.     CL = monitor type
  3069.         00h mono
  3070.         01h CGA
  3071.         02h EGA
  3072.         03h digital multifrequency
  3073.         04h IBM PS/2
  3074.         05h IBM 8514
  3075.         06h SuperVGA
  3076.         07h analog multifrequency
  3077.         08h super multifrequency
  3078.     CH = feature bits
  3079.         bits 7,6: 00 = 256K memory
  3080.               01 = 512K memory
  3081.               10 = 1024K
  3082.               11 = 2048K memory
  3083.         bit 5:    special oscillator present
  3084.         bit 4:    VGA protect enabled
  3085.         bit 0:    6845 emulation
  3086.     DX = video board info
  3087.         bits 4-15: board ID model
  3088.         bits 0-3:  board ID revision
  3089.     DI = BCD BIOS version number
  3090. Note:    board models for Trident-based Everex cards:
  3091.         236h Ultragraphics II
  3092.         620h Vision VGA
  3093.         673h EVGA
  3094.         678h Viewpoint
  3095. ----------107000BX0004-----------------------
  3096. INT 10 - Everex Extended Video BIOS - GET PAGING FUNCTION POINTER FOR CURR MODE
  3097.     AX = 7000h
  3098.     BX = 0004h
  3099. Return: ES:DI -> FAR paging function (call with DL = page to set)
  3100. Note:    the word preceding ES:DI is the length of the function in bytes, and
  3101.       the last byte of the function is a FAR return instruction.
  3102. SeeAlso: AX=4F05h,AX=7000h/BX=0000h,AX=7000h/BX=0005h
  3103. ----------107000BX0005-----------------------
  3104. INT 10 - Everex Extended Video BIOS - GET SUPPORTED MODE INFO
  3105.     AX = 7000h
  3106.     BX = 0005h
  3107.     CL = maximum number of modes to get info for
  3108.     CH = mode type to get info for (see below)
  3109.     DL = monitor type to get info for
  3110.     ES:DI -> buffer for mode info (see below)
  3111. Return: CL = total number of modes fitting criteria
  3112.     CH = size of each info record
  3113. SeeAlso: AX=7000h/BX=0000h,AX=7000h/BX=0004h
  3114.  
  3115. Values for mode type:
  3116.  00h all modes
  3117.  01h monochrome text modes
  3118.  02h color text modes
  3119.  03h four-color CGA graphics modes
  3120.  04h two-color CGA graphics modes
  3121.  05h 16-color graphics modes
  3122.  06h 256-color graphics modes
  3123.  
  3124. Format of mode information record:
  3125. Offset    Size    Description
  3126.  00h    BYTE    mode number (bit 7 set if extended mode)
  3127.  01h    BYTE    mode type (see above)
  3128.  02h    BYTE    info bits
  3129.         bits 7,6 reserved
  3130.              5     monochrome mode
  3131.              4     interlaced display
  3132.              3     requires special oscillator
  3133.              2,1 memory required
  3134.              00 = 256K
  3135.              01 = 512K
  3136.              10 = 1024K
  3137.              11 = 2048K
  3138.              0     reserved
  3139.  03h    BYTE    font height
  3140.  04h    BYTE    text columns on screen
  3141.  05h    BYTE    text rows on screen
  3142.  06h    WORD    number of scan lines
  3143.  08h    BYTE    color information
  3144.         bits 7-4 reserved
  3145.              3-0 bits per pixel
  3146. ----------1071-------------------------------
  3147. INT 10 - VIDEO - TANDY 2000 only - GET ADDRESS OF INCRAM
  3148.     AH = 71h
  3149. Return: AX:BX -> WORD containing segment address of INCRAM
  3150.     AX:CX -> WORD containing offset of INCRAM
  3151. SeeAlso: AH=70h
  3152. ----------1072-------------------------------
  3153. INT 10 - VIDEO - TANDY 2000 only - SCROLL RIGHT PART OR ALL OF SCREEN
  3154.     AH = 72h
  3155.     AL = number of columns to shift scroll area, 00h to clear entire area
  3156.     BH = new attributes for blanked columns at left
  3157.     CH,CL = row, column of upper left corner of scroll area
  3158.     DH,DL = row, column of lower right corner of scroll area
  3159. SeeAlso: AH=06h,AH=07h,AH=73h,INT 15/AH=12h/BH=05h
  3160. ----------1073------------------------------
  3161. INT 10 - VIDEO - TANDY 2000 only - SCROLL LEFT PART OR ALL OF SCREEN
  3162.     AH = 73h
  3163.     AL = number of columns to shift scroll area, 00h to clear entire area
  3164.     BH = new attributes for blanked columns at right
  3165.     CH,CL = row, column of upper left corner of scroll area
  3166.     DH,DL = row, column of lower right corner of scroll area
  3167. SeeAlso: AH=06h,AH=07h,AH=72h,INT 15/AH=12h/BH=05h
  3168. ----------107F00-----------------------------
  3169. INT 10 - SOLLEX SuperVGA - GET EXTENSIONS INFO
  3170.     AX = 7F00h
  3171. Return: AL != 7Fh if not supported
  3172.     AL = 7Fh if supported
  3173.         AH = status
  3174.         00h successful
  3175.             ES:DI -> info structure (see below)
  3176.         01h failed
  3177. SeeAlso: AX=4F00h
  3178.  
  3179. Format of info structure:
  3180. Offset    Size    Description
  3181.  00h    DWORD    pointer to VESA function dispatch table
  3182.  04h    DWORD    pointer to SOLLEX function dispatch table
  3183.  08h    DWORD    pointer to VESA SuperVGA info (see AX=4F00h)
  3184.  0Ch    DWORD    pointer to mode info structure table, consisting of
  3185.         alternating ResInfo (see below) and VESA mode information
  3186.         (see AX=4F01h) blocks, terminated with an FFFFh word
  3187.  10h    DWORD    pointer to font info structure table (see below)
  3188.  14h    WORD    high resolution crystal frequency in Hz (0000h = not present)
  3189.  16h    DWORD    pointer to ASCIZ ID string
  3190.  1Ah    DWORD    pointer to timeout reset table
  3191.         array of bytes, each a multiple of the minimum time increment
  3192.  1Eh    WORD    minimum time increment in timer ticks
  3193.  20h    BYTE    inverse options supported
  3194.         bit 0: inverse supported
  3195.         bits 1-7: reserved
  3196.  21h    BYTE    normal color value
  3197.  22h    BYTE    inverse color value
  3198.  23h    WORD    port to be accessed for normal/inverse settings
  3199.  25h    WORD    type of interface chip (currently undefined)
  3200.  27h    WORD    program operational mode
  3201.         bits 1-0: 00 no preference
  3202.               01 terse (minimum detail in program messages)
  3203.               10 verbose
  3204.               11 use menus if supported, verbose mode otherwise
  3205.         bits 7-2: reserved
  3206.  29h    WORD    SOLLEX specification version
  3207.  2Bh    WORD    version of VESA/SOLLEX implementation
  3208.  2Dh    DWORD    offset to relocatable portion of SOLLEX extensions (for CONFIG)
  3209.  2Eh    DWORD    offset to unused section of the extensions ROM
  3210.  31h 16 BYTEs    reserved
  3211. Note:    all DWORD pointers initially require segment fixups; if the segment
  3212.       is 0000h, it should be changed to the returned ES, otherwise it
  3213.       may be assumed to be correct
  3214.  
  3215. Format of ResInfo:
  3216. Offset    Size    Description
  3217.  00h    WORD    16-bit mode number
  3218.  02h    WORD    adapter type (00h VGA, 01h EGA, 02h CGA, 03h MDA)
  3219.  04h    WORD    display info (see AX=7F01h/BL=01h)
  3220.  06h    DWORD    pointer to video parameter table
  3221.  0Ah    BYTE    replacement entry in master Video Parameter
  3222.  0Bh    BYTE    mode requested for mode set by BIOS
  3223.  0Ch    DWORD    pointer to LoadReg table
  3224.  10h    BYTE    index into table of clock values (see below)
  3225.  
  3226. Format of font info table [array] entry:
  3227. Offset    Size    Description
  3228.  00h    BYTE    required font height
  3229.  01h    BYTE    parameter to load text mode font
  3230.  02h    BYTE    parameter to load graphics mode font
  3231.  
  3232. Values for clock value index:
  3233.  00h    25 MHz
  3234.  01h    28 MHz
  3235.  02h    PCLK
  3236.  03h    31.5 MHz (VESA 640x480)
  3237.  04h    reserved
  3238.  05h    16 MHz (EGA)
  3239.  06h    PCLK
  3240.  07h    24 MHz (EGA)
  3241.  08h    25 MHz
  3242.  09h    28 MHz
  3243.  0Ah    36 MHz
  3244.  0Bh    45 MHz (for 1024x768)
  3245.  0Ch    80 MHz
  3246.  0Dh    40 MHz
  3247.  0Eh    65 MHz
  3248.  0Fh     1 MHz (for powerdown)
  3249. ----------107F01BL00-------------------------
  3250. INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - SET ADAPTER
  3251.     AX = 7F01h
  3252.     BL = 00h
  3253.     CX = adapter request
  3254.         bits 1-0: adapter type (00 VGA, 01 EGA, 10 CGA, 11 MDA)
  3255.         bit 2:    reserved
  3256.         bits 4-3: change displays (00 none, 01 analog 10 digital 11 panel)
  3257.         bits 6-5: desired monitor sense (01 color, 10 mono, 11=8514)
  3258.         bit 7:    lock override
  3259.         bit 8:    alternate adapter mode
  3260.         bits 15-9: reserved
  3261. Return: AL != 7Fh if not supported
  3262.     AL = 7Fh if supported
  3263.         AH = status
  3264.         00h successful
  3265.         01h failed
  3266. Note:    initializes video hardware to a particular standard
  3267. SeeAlso: AX=7F00h,AX=7F01h/BL=01h,AX=7F01h/BL=02h
  3268. ----------107F01BL01-------------------------
  3269. INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - GET ADAPTER
  3270.     AX = 7F01h
  3271.     BL = 01h
  3272. Return: AL != 7Fh if not supported
  3273.     AL = 7Fh if supported
  3274.         AH = status
  3275.         00h successful
  3276.         01h failed
  3277.         BX = adapter type (see AX=7F01h/BL=00h)
  3278.         DX = display type
  3279.         bits 1-0: monitor sense (00 none, 01 color, 10 mono, 11=8514)
  3280.         bit 2:      multi-frequency analog monitor active
  3281.         bit 3:      LCD panel active
  3282.         bit 4:      plasma/electroluminescent panel active
  3283.         bit 5:      PS/2-type monitor active
  3284.         bit 6:      multi-frequency digital monitor active
  3285.         bit 7:      Enhanced Color Display monitor active
  3286.         bit 8:      alternate display active
  3287.         bits 15-9: reserved
  3288. SeeAlso: AX=7F00h,AX=7F01h/BL=00h,AX=7F01h/BL=02h
  3289. ----------107F01BL02-------------------------
  3290. INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - DETERMINE ADAPTER SUPPORT
  3291.     AX = 7F01h
  3292.     BL = 02h
  3293.     CX = adapter request (see AX=7F01h/BL=00h)
  3294. Return: AL != 7Fh if not supported
  3295.     AL = 7Fh if supported
  3296.         AH = status
  3297.         00h requested setting can successfully be made
  3298.         01h requested setting not available in this configuration
  3299. SeeAlso: AX=7F00h,AX=7F01h/BL=00h
  3300. ----------107F02BL00-------------------------
  3301. INT 10 - SOLLEX SuperVGA - DISPLAY OUTPUT CONTROL - SET DISPLAY OUTPUT
  3302.     AX = 7F02h
  3303.     BL = 00h
  3304.     CX = display output setting
  3305.         bit 0: CRTC control in bits 2,1 valid
  3306.         bit 1: enable digital output
  3307.         bit 2: enable analog output
  3308.         bit 3: panel control in bits 5,4 valid
  3309.         bit 4: enable LCD output
  3310.         bit 5: enable plasma/EL output
  3311.         bit 6: inverse control in bit 7 valid
  3312.         bit 7: 0=normal, 1=inverse
  3313.         bits 15-8 reserved
  3314. Return: AL != 7Fh if not supported
  3315.     AL = 7Fh if supported
  3316.         AH = status
  3317.         00h successful
  3318.         01h failed
  3319. SeeAlso: AX=7F00h,AX=7F02h/BL=00h
  3320. ----------107F02BL01-------------------------
  3321. INT 10 - SOLLEX SuperVGA - DISPLAY OUTPUT CONTROL - GET DISPLAY OUTPUT
  3322.     AX = 7F02h
  3323.     BL = 01h
  3324. Return: AL != 7Fh if not supported
  3325.     AL = 7Fh if supported
  3326.         AH = status
  3327.         00h successful
  3328.             BX = display output setting (see AX=7F02h/BL=00h)
  3329.             CX = displays attached
  3330.             bit 0: PS/2 display on analog output
  3331.             bit 1: multi-frequency monitor on analog output
  3332.             bit 2: LCD panel attached
  3333.             bit 3: plasma/electroluminescent panel attached
  3334.             bit 4: multi-frequency monitor on digital output
  3335.             bit 5: Enhanced Color Display attached to digital outpt
  3336.             bit 6: alternate display
  3337.             bits 15-7: reserved
  3338.         01h failed
  3339. SeeAlso: AX=7F00h,AX=7F02h/BL=00h
  3340. ----------107F03BL00-------------------------
  3341. INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - GET SUPPORT INFO
  3342.     AX = 7F03h
  3343.     BL = 00h
  3344.     CX = support type
  3345.         0000h VGA, 0001h EGA, 0002h CGA, 0003h MDA, 0004h extensions,
  3346.         0005h-0012h reserved for SOLLEX, 0013h Hercules,
  3347.         0014h-001Fh reserved for SOLLEX, 0020h-00FFh reserved for OEM
  3348. Return: AL != 7Fh if not supported
  3349.     AL = 7Fh if supported
  3350.         AH = status
  3351.         00h successful
  3352.             CX = size of video support code
  3353.             DX = segment of physical video support (0000h if no ROM)
  3354.             ES = segment of active video support
  3355.             ES:DI -> information block (DI = 0000h if none available)
  3356.         01h failed
  3357. SeeAlso: AX=7F03h/BL=01h
  3358. ----------107F03BL01-------------------------
  3359. INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - INITIALIZE VIDEO SUPPORT
  3360.     AX = 7F03h
  3361.     BL = 01h
  3362.     CX = support request
  3363.     ES = segment of support code
  3364. Return: AL != 7Fh if not supported
  3365.     AL = 7Fh if supported
  3366.         AH = status
  3367.         00h successful
  3368.         01h failed
  3369. Note:    initializes the indicated video support by calling ES:0003h; this
  3370.       function may be used to switch the active video support back to
  3371.       ROM after AX=7F03h/BL=02h
  3372. SeeAlso: AX=7F03h/BL=00h
  3373. ----------107F03BL02-------------------------
  3374. INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - GO RAM RESIDENT
  3375.     AX = 7F03h
  3376.     BL = 02h
  3377.     CX = support request
  3378.     ES = destination segment
  3379. Return: AL != 7Fh if not supported
  3380.     AL = 7Fh if supported
  3381.         AH = status
  3382.         00h successful
  3383.         01h failed
  3384. SeeAlso: AX=7F00h,AX=7F03h/BL=01h
  3385. ----------107F04BL00-------------------------
  3386. INT 10 - SOLLEX SuperVGA - POWER CONTROL - SET POWER STATE
  3387.     AX = 7F04h
  3388.     BL = 00h
  3389.     CX = new power state
  3390. Return: AL != 7Fh if not supported
  3391.     AL = 7Fh if supported
  3392.         AH = status
  3393.         00h successful
  3394.         01h failed
  3395. Note:    higher values progressively reduce the operations available on the
  3396.       video adapter while yielding increasing power savings
  3397. SeeAlso: AX=7F00h,AX=7F04h/BL=01h
  3398. ----------107F04BL01-------------------------
  3399. INT 10 - SOLLEX SuperVGA - POWER CONTROL - GET POWER STATE
  3400.     AX = 7F04h
  3401.     BL = 01h
  3402. Return: AL != 7Fh if not supported
  3403.     AL = 7Fh if supported
  3404.         AH = status
  3405.         00h successful
  3406.             CX = current power state
  3407.             DX = maximum state
  3408.         01h failed
  3409. SeeAlso: AX=7F00h,AX=7F04h/BL=00h
  3410. ----------107F04BL02-------------------------
  3411. INT 10 - SOLLEX SuperVGA - POWER CONTROL - SET TIMEOUT RESET
  3412.     AX = 7F04h
  3413.     BL = 02h
  3414.     CX = timeout reset
  3415. Return: AL != 7Fh if not supported
  3416.     AL = 7Fh if supported
  3417.         AH = status
  3418.         00h successful
  3419.         01h failed
  3420. SeeAlso: AX=7F00h,AX=7F04h/BL=03h
  3421. ----------107F04BL03-------------------------
  3422. INT 10 - SOLLEX SuperVGA - POWER CONTROL - GET TIMEOUT RESET
  3423.     AX = 7F04h
  3424.     BL = 03h
  3425. Return: AL != 7Fh if not supported
  3426.     AL = 7Fh if supported
  3427.         AH = status
  3428.         00h successful
  3429.             BX = time increment
  3430.             CX = current timeout reset
  3431.             DX = maximum timeout reset
  3432.             ES:DI -> timeout reset table (array of bytes)
  3433.         01h failed
  3434. Note:    the timeout period is computed as (BYTE ES:[DI+CX]) * BX timer ticks
  3435. SeeAlso: AX=7F00h,AX=7F04h/BL=02h
  3436. ----------107F05-----------------------------
  3437. INT 10 - SOLLEX SuperVGA - LOAD REGISTER
  3438.     AX = 7F05h
  3439.     ES:DI -> register value table (see below)
  3440. Return: AL != 7Fh if not supported
  3441.     AL = 7Fh if supported
  3442.         AH = status
  3443.         00h successful
  3444.         01h failed
  3445. SeeAlso: AH=F1h,AH=F3h,AH=F5h
  3446.  
  3447. Format of register value table:
  3448. Offset    Size    Description
  3449.  00h    WORD    base I/O register (FFFFh = end of list)
  3450.  02h 2N BYTEs    pairs of values to be written to the base I/O register as an
  3451.         index value and the following register as a data byte
  3452.  2N+2    WORD    FFFFh (end of data list)
  3453.     ... (repeats until FFFFh base address)
  3454. ----------107F06-----------------------------
  3455. INT 10 - SOLLEX SuperVGA - MULTIPLE FONT CONTROL
  3456.     AX = 7F06h
  3457.     BL = subfunction
  3458.         00h set multiple font state
  3459.         CX = new state (00h off, 01h on)
  3460.         01h get multiple font state
  3461.         Return: BL = current state (00h off, 01h on)
  3462. Return: AL != 7Fh if not supported
  3463.     AL = 7Fh if supported
  3464.         AH = status
  3465.         00h successful
  3466.         01h failed
  3467. SeeAlso: AH=11h
  3468. ----------107F07-----------------------------
  3469. INT 10 - SOLLEX SuperVGA - FILL VIDEO RAM
  3470.     AX = 7F07h
  3471.     BL = how much to fill
  3472.        00h regen size
  3473.        01h all video memory
  3474.     CX = pattern to write (normally 0720h for text modes and 0000h for gr)
  3475. Return: AL != 7Fh if not supported
  3476.     AL = 7Fh if supported
  3477.         AH = status
  3478.         00h successful
  3479.         01h failed
  3480. SeeAlso: AH=06h
  3481. ----------1080--DX4456-----------------------
  3482. INT 10 U - VIDEO - DESQview 2.0x only - internal - SET ??? HANDLER
  3483.     AH = 80h
  3484.     DX = 4456h ('DV')
  3485.     ES:DI -> FAR subroutine to be called on ???
  3486. Return: DS = segment of DESQview data structure for video buffer
  3487. Note:    this function is probably meant for internal use only, due to the magic
  3488.       value required in DX
  3489.     the subroutine seems to be called when the DESQview menu is accessed;
  3490.       on entry, AL = 03h or 04h
  3491. ----------1081--DX4456-----------------------
  3492. INT 10 U - VIDEO - DESQview 2.0x only - internal - GET ???
  3493.     AH = 81h
  3494.     DX = 4456h ('DV')
  3495. Return: ES = segment of DESQview data structure for video buffer
  3496.         BYTE ES:[0] = current window number in DV 2.0x
  3497. Note:    this function is probably meant for internal use only, due to the magic
  3498.       value required in DX
  3499. SeeAlso: AH=82h
  3500. ----------1082--DX4456-----------------------
  3501. INT 10 U - VIDEO - DESQview 2.0x only - internal - GET CURRENT WINDOW INFO
  3502.     AH = 82h
  3503.     DX = 4456h ('DV')
  3504. Return: DS = segment in DESQview for data structure
  3505.          in DV 2.00,
  3506.           BYTE DS:[0] = window number
  3507.           WORD DS:[1] = segment of other data structure
  3508.           WORD DS:[3] = segment of window's object handle
  3509.     ES = segment of DESQview data structure for video buffer
  3510.     AL = current window number
  3511.     AH = ???
  3512.     BL = direct screen writes
  3513.         00h program does not do direct writes
  3514.         01h program does direct writes, so shadow buffer not usable
  3515.     BH = ???
  3516.     CL = current video mode
  3517.     CH = ???
  3518. Note:    this function is probably meant for internal use only, due to the magic
  3519.       value required in DX
  3520. SeeAlso: AH=81h
  3521. ----------108200-----------------------------
  3522. INT 10 - VIDEO - AX PC - GET/SET SCROLL MODE
  3523.     AX = 8200h
  3524.     BL = new scroll mode or FFh to get current mode
  3525.         00h dynamic, 01h software
  3526. Return: AL = scroll mode (current mode if BL=FFh, previous mode otherwise)
  3527. SeeAlso: AH=06h,AH=07h
  3528. ----------108300-----------------------------
  3529. INT 10 - VIDEO - AX PC - GET VIDEO RAM ADDRESS
  3530.     AX = 8300h
  3531. Return: AX = offset of video RAM
  3532.     ES:BX -> virtual text RAM buffer
  3533. SeeAlso: AX=5201h
  3534. ----------108B-------------------------------
  3535. INT 10 - Alloy MW386 - FORCE WORKSTATION SCREEN UPDATE
  3536.     AH = 8Bh
  3537. SeeAlso: AH=92h,AH=93h
  3538. ----------1090-------------------------------
  3539. INT 10 - Alloy MW386 - GET PHYSICAL WORKSTATION DISPLAY MODE
  3540.     AH = 90h
  3541. Return: AL = current video mode (see AH=00h)
  3542. SeeAlso: AH=91h
  3543. ----------1091-------------------------------
  3544. INT 10 - Alloy MW386 - GET PHYSICAL WORKSTATION ADAPTER TYPE
  3545.     AH = 91h
  3546. Return: AL = video adapter type
  3547.         00h monochrome
  3548.         01h Hercules monochrome graphics
  3549.         02h CGA
  3550.         03h EGA
  3551.         04h VGA
  3552.         80h monochrome text terminal
  3553.         81h Hercules graphics terminal
  3554.         82h color graphics terminal
  3555. Note:    types less than 80h do not imply that the current user is on the host
  3556. SeeAlso: AH=90h
  3557. ----------1092-------------------------------
  3558. INT 10 - Alloy MW386 - INHIBIT WORKSTATION SCREEN UPDATES
  3559.     AH = 92h
  3560. Note:    the terminal will be updated even when screen updates are inhibited if
  3561.       TTY output is used
  3562. SeeAlso: AH=8Bh
  3563. ----------1093-------------------------------
  3564. INT 10 - Alloy MW386 - REDRAW SCREEN
  3565.     AH = 93h
  3566. SeeAlso: AH=8Bh
  3567. ----------10BF00-----------------------------
  3568. INT 10 - VIDEO - Compaq Portable Extensions - SELECT EXTERNAL MONITOR
  3569.     AX = BF00h
  3570. Note:    all registers preserved and the internal monitor is blanked
  3571.     the external monitor becomes the active monitor
  3572. SeeAlso: AX=BF01h
  3573. ----------10BF01-----------------------------
  3574. INT 10 - VIDEO - Compaq Portable Extensions - SELECT INTERNAL MONITOR
  3575.     AX = BF01h
  3576. Note:    all registers preserved and the external monitor is blanked
  3577.     the internal monitor becomes the active monitor
  3578. SeeAlso: AX=BF00h
  3579. ----------10BF02-----------------------------
  3580. INT 10 - VIDEO - Compaq Portable Extensions - SET MASTER MODE OF CURRENT CTRLR
  3581.     AX = BF02h
  3582.     BH = master mode
  3583.         04h CGA
  3584.         05h EGA
  3585.         07h MDA
  3586. SeeAlso: AX=BF03h
  3587. ----------10BF03BX0000-----------------------
  3588. INT 10 - VIDEO - Compaq Portable/Systempro Extensions - GET ENVIRONMENT
  3589.     AX = BF03h
  3590.     BX = 0000h
  3591. Return: BH = active monitor
  3592.         00h = external
  3593.         01h = internal
  3594.     BL = master mode
  3595.         00h = switchable VDU not present
  3596.         04h = CGA
  3597.         05h = EGA
  3598.         07h = MDA
  3599.         08h = switchable LCD controller present
  3600.     CH = 00h (reserved)
  3601.     CL = switchable VDU mode supported
  3602.         bit     0   = CGA supported
  3603.         bits 1,2 = reserved (1)
  3604.         bit     3   = MDA supported
  3605.         bits 4-7 = reserved (1)
  3606.     DH = internal monitor type
  3607.         00h = none
  3608.         01h = Dual-mode monitor
  3609.         02h = 5153 RGB monitor
  3610.         03h = Compaq Color monitor
  3611.         04h = 640x400 flat panel
  3612.         07h = LCD VGA
  3613.     DL = external monitor type
  3614.         00h = none
  3615.         01h = dual-mode monitor
  3616.         02h = 5153 RGB monitor
  3617.         03h = Compaq Color monitor
  3618.         04h = 640x400 flat panel
  3619.         05h = VGC monochrome
  3620.         06h = VGC color
  3621. SeeAlso: AH=1Ah,AX=BF00h,AX=BF01h,AX=BF02h
  3622. ----------10BF04-----------------------------
  3623. INT 10 - VIDEO - Compaq Portable Extensions - SET MODE SWITCH DELAY
  3624.     AX = BF04h
  3625.     BH = new state of delay
  3626.         00h enabled
  3627.         01h disabled
  3628. SeeAlso: AX=BF05h
  3629. ----------10BF05-----------------------------
  3630. INT 10 - VIDEO - Compaq Systempro Extensions - ENABLE/DISABLE DISPLAY
  3631.     AX = BF05h
  3632.     BH = new state of video
  3633.         00h off
  3634.         01h on
  3635. SeeAlso: AX=BF04h
  3636. ----------10BF06-----------------------------
  3637. INT 10 - VIDEO - Compaq SLT/286 - READ GRAY SCALE TABLE
  3638.     AX = BF06h
  3639.     CL = address to be read from gray scale table
  3640. Return: AL = bit 3-0 - Value read from gray scale table
  3641.     CL = address to be read from gray scale table
  3642. SeeAlso: AH=12h/BL=33h,AX=BF07h
  3643. ----------10BF07-----------------------------
  3644. INT 10 - VIDEO - Compaq SLT/286 - WRITE GRAY SCALE TABLE
  3645.     AX = BF07h
  3646.     CH = value to write to gray scale table
  3647.     CL = address to be written to gray scale table
  3648. SeeAlso: AX=BF06h
  3649. ----------10BF08-----------------------------
  3650. INT 10 - VIDEO - Compaq SLT/286 - WRITE COLOR MIX REGISTERS
  3651.     AX = BF08h
  3652.     CH = bits 7-4 - Green weight
  3653.          bits 3-0 - Blue weight
  3654.     CL = bits 7-4 - unused
  3655.          bits 3-0 - Red weight
  3656. ----------10CC00SI0000-----------------------
  3657. INT 10 - VIDEO - UltraVision - GET STATUS (INSTALLATION CHECK)
  3658.     AX = CC00h
  3659.     SI = 0000h (if checking version)
  3660. Return: CX = ABCDh
  3661.     AL = Ultravision extensions
  3662.         00h enabled
  3663.         FFh disabled
  3664.     AH = card designator
  3665.     BX:00F0h -> palette values (for compatibility with NEWFONT)
  3666.     DX = support for high resolution modes
  3667.         00h not active
  3668.         01h active
  3669.     SI = UltraVision version number (v1.2+), high byte=major,low byte=minor
  3670.        = unchanged for versions <1.2
  3671. SeeAlso: AX=CC01h,AX=CC02h
  3672. ----------10CC01-----------------------------
  3673. INT 10 - VIDEO - UltraVision - DISABLE EXTENSIONS
  3674.     AX = CC01h
  3675. Notes:    subsequent BIOS calls will be passed through to previous handler
  3676.     should be followed immediately by mode set to restore normal EGA/VGA
  3677.       state
  3678. SeeAlso: AX=CC02h
  3679. ----------10CC02-----------------------------
  3680. INT 10 - VIDEO - UltraVision - ENABLE EXTENSIONS
  3681.     AX = CC02h
  3682. Note:    should be followed immediately by mode set to restore previous
  3683.       UltraVision state
  3684. SeeAlso: AX=CC01h
  3685. ----------10CD00-----------------------------
  3686. INT 10 - VIDEO - UltraVision - LOAD ULTRAVISION PALETTE (color EGA,VGA)
  3687.     AX = CD00h
  3688.     CL = palette table number (01h-07h for v1.x, 01h-0Fh for v2+)
  3689.     DS:DX -> 16-byte palette register list (colors for registers 00h-0Fh)
  3690. Notes:    if palette locking is in effect for the current mode, the new colors
  3691.       will be displayed immediately; otherwise, the system reverts to the
  3692.       default palette
  3693.     palette table 0 is reserved for the default palette and cannot be set
  3694.     UltraVision always sets the border color to black
  3695. SeeAlso: AX=CD01h,AX=CD02h
  3696. ----------10CD01-----------------------------
  3697. INT 10 - VIDEO - UltraVision - SET PALETTE LOCKING STATUS (color EGA,VGA)
  3698.     AX = CD01h
  3699.     CL = palette locking value
  3700.         00h none
  3701.         01h text modes only (02h,03h)
  3702.         FFh all modes (all standard color text and graphics modes)
  3703. Notes:    intended for video modes with 16 or fewer colors
  3704. SeeAlso: AX=1000h,AX=1002h,AX=CD00h,AX=CD03h
  3705. ----------10CD02-----------------------------
  3706. INT 10 - VIDEO - UltraVision - GET ULTRAVISION PALETTE (EGA,VGA)
  3707.     AX = CD02h
  3708. Return: CL = palette table number
  3709.     DS:DX -> 17-byte palette register list
  3710.     DS:SI -> current font names table (see below)
  3711. Note:    only the font names are valid on monochrome EGA systems
  3712. SeeAlso: AX=1009h,AX=CD00h
  3713.  
  3714. Format of palette register list:
  3715. Offset    Size    Description
  3716.  00h 16 BYTEs    colors for palette registers 00h through 0Fh
  3717.  10h    BYTE    border color
  3718.  
  3719. Format of current font names table (v2+):
  3720. Offset    Size    standard EGA    HiRes EGA    VGA
  3721.  00h  8 BYTEs    N/A        F19 font    F20 font
  3722.  08h  8 BYTEs    F14 font    F14 font    F14 font
  3723.  10h  8 BYTEs    N/A        F11 font    F10 font
  3724.  18h  8 BYTEs    F8 font        F8 font        F8 font
  3725.  
  3726. Format of current font names table (v1.x):
  3727. Offset    Size    HiRes EGA
  3728.  00h  8 BYTEs    F19/F14 font
  3729.  08h  8 BYTEs    F11/F8 font
  3730. ----------10CD03-----------------------------
  3731. INT 10 - VIDEO - UltraVision - GET PALETTE LOCKING STATUS (color EGA,VGA)
  3732.     AX = CD03h
  3733. Return: CL = palette locking value
  3734.         00h none
  3735.         01h text modes only
  3736.         FFh all modes
  3737. SeeAlso: AX=CD01h
  3738. ----------10CD04-----------------------------
  3739. INT 10 - VIDEO - UltraVision - GET UltraVision TEXT MODE (EGA,VGA)
  3740.     AX = CD04h
  3741. Return: AL = mode number
  3742.         11h 80x25
  3743.         12h 80x43, 80x50
  3744.         13h 80x34, 80x36
  3745.         14h 80x60, 80x63
  3746.         19h 94x25
  3747.         1Ah 94x43, 94x50
  3748.         1Bh 94x36
  3749.         1Ch 94x63
  3750.         21h 108x25
  3751.         22h 108x43, 108x50
  3752.         23h 107x34, 108x36
  3753.         24h 108x60, 108x63
  3754.         31h 120x25
  3755.         32h 120x43, 120x50
  3756.         33h 132x25
  3757.         34h 132x44, 132x50
  3758.         39h 120x36
  3759.         3Ah 120x63
  3760.         3Bh 132x36
  3761.         3Ch 132x60
  3762. SeeAlso: AH=0Fh,AX=CC00h,AH=CDh
  3763. ----------10CD05-----------------------------
  3764. INT 10 - VIDEO - UltraVision - SET CURSOR TYPE (EGA,VGA)
  3765.     AX = CD05h
  3766.     CL = type
  3767.         00h line cursor
  3768.         FFh box cursor
  3769. Note:    sets default cursor type for text-based programs
  3770. SeeAlso: AH=01h,AX=CD06h
  3771. ----------10CD06-----------------------------
  3772. INT 10 - VIDEO - UltraVision - GET CURSOR TYPE (EGA,VGA)
  3773.     AX = CD06h
  3774. Return:    CL = type
  3775.         00h line cursor
  3776.         FFh box cursor
  3777. SeeAlso: AH=03h,AX=CD05h
  3778. ----------10CD07-----------------------------
  3779. INT 10 - VIDEO - UltraVision v1.2+ - SET UNDERLINE STATUS (EGA,VGA)
  3780.     AX = CD07h
  3781.     CL = hardware underline status
  3782.         00h off (color systems only)
  3783.         01h underline below characters
  3784.         02h strike through characters
  3785.     BL = foreground color for normal text (FFh = current)
  3786.     BH = foreground color for bright text (FFh = current)
  3787. Return: CL = hardware underline status
  3788.     BL = current foreground color for normal text
  3789.     BH = current foreground color for bright text
  3790. Notes:    when underline or strikeout is enabled in color text modes, the
  3791.       specified colors will be assigned temporarily to colors 01h and 09h,
  3792.       allowing affected text to match non-underlined text.    The color
  3793.       remapping uses values from the current onscreen palette regardless
  3794.       of the palette locking status (see AX=CD01h)
  3795.     specify the standard colors (BL=01h,BH=09h) to enable underline or
  3796.       strikeout without color remapping
  3797. SeeAlso: AX=CD08h
  3798. ----------10CD08-----------------------------
  3799. INT 10 - VIDEO - UltraVision v1.2+ - GET UNDERLINE STATUS (EGA,VGA)
  3800.     AX = CD08h
  3801. Return: CL = hardware underline status (see AX=CD07h)
  3802.     BL = foreground color for normal text
  3803.     BH = foreground color for bright text
  3804. Note:    only CL is valid on monochrome EGA systems
  3805. SeeAlso: AX=CD07h
  3806. ----------10CD10-----------------------------
  3807. INT 10 - VIDEO - UltraVision - LOAD USER FONT (EGA,VGA)
  3808.     AX = CD10h
  3809.     BH = bytes per character (08h,0Ah,0Bh,0Eh,13h,14h)
  3810.     CX = ABCDh load 9xN alternate font (v2+)
  3811.        else number of characters to load
  3812.         DX = character offset into font table
  3813.         DS:SI -> 8-byte ASCII font name
  3814.     ES:BP -> font definitions
  3815. Return: AX = FFFFh if invalid font parameters
  3816. Notes:    loads the designated characters into UltraVision's resident font area
  3817.     should be followed by a video mode set to reload character generator
  3818. SeeAlso: AX=1100h
  3819. ----------10CD-------------------------------
  3820. INT 10 - VIDEO - UltraVision - SET ULTRAVISION TEXT MODE (EGA,VGA)
  3821.     AH = CDh
  3822.     AL = text mode number (see AX=CD04h)
  3823. Return: AX = CDCDh if invalid mode
  3824. SeeAlso: AX=CD04h
  3825. ----------10EF-------------------------------
  3826. INT 10 - VIDEO - MSHERC.COM - INSTALLATION CHECK???
  3827.     AH = EFh
  3828. Return: DL = video adapter type
  3829.         00h original Hercules
  3830.         01h ???  \ one is probably Hercules Plus, the other
  3831.         02h ???  / Hercules InColor
  3832.         FFh non-Hercules 
  3833.     DH = memory mode byte
  3834.         01h "half" mode
  3835.         03h "full" mode
  3836. Note:    MSHERC.COM is a support program for the Microsoft Quick languages which
  3837.       makes their graphics libraries compatible with a Hercules card by
  3838.       adding video modes 08h and 88h, and supporting text in the new
  3839.       graphics modes.  While in mode 08h or 88h, INT 10 supports the
  3840.       Hercules card much like a CGA.
  3841. ----------10F0-------------------------------
  3842. INT 10 - EGA Register Interface Library - READ ONE REGISTER
  3843.     AH = F0h
  3844.     BL = register number
  3845.     BH = 00h
  3846.     DX = group index
  3847.         Pointer/data chips
  3848.            00h CRT Controller (25 reg) 3B4h mono modes, 3D4h color modes
  3849.            08h Sequencer (5 registers) 3C4h
  3850.            10h Graphics Controller (9 registers) 3CEh
  3851.            18h Attribute Controller (20 registers) 3C0h
  3852.         Single registers
  3853.            20h Miscellaneous Output register 3C2h
  3854.            28h Feature Control register (3BAh mono modes, 3DAh color modes)
  3855.            30h Graphics 1 Position register 3CCh
  3856.            38h Graphics 2 Position register 3CAh
  3857. Return: BL = data
  3858. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  3859.       compatibility box, and others
  3860. SeeAlso: AH=F1h,AH=F2h,INT 2F/AX=BC00h
  3861. ----------10F1-------------------------------
  3862. INT 10 - EGA Register Interface Library - WRITE ONE REGISTER
  3863.     AH = F1h
  3864.     DX = group index (see AH=F0h)
  3865.         if single register:
  3866.         BL = value to write
  3867.         otherwise
  3868.         BL = register number
  3869.         BH = value to write
  3870. Return: BL = data
  3871. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  3872.       compatibility box, and others
  3873. SeeAlso: AX=7F05h,AH=F0h,AH=F3h
  3874. ----------10F2-------------------------------
  3875. INT 10 - EGA Register Interface Library - READ REGISTER RANGE
  3876.     AH = F2h
  3877.     CH = starting register number
  3878.     CL = Number of registers (>1)
  3879.     DX = group index
  3880.          00h CRTC (3B4h mono modes, 3D4h color modes)
  3881.          08h Sequencer 3C4h
  3882.          10h Graphics Controller 3CEh
  3883.          18h Attribute Controller 3C0h
  3884.     ES:BX -> buffer, CL bytes
  3885. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  3886.       compatibility box, and others
  3887. SeeAlso: AH=F0h,AH=F3h
  3888. ----------10F3-------------------------------
  3889. INT 10 - EGA Register Interface Library - WRITE REGISTER RANGE
  3890.     AH = F3h
  3891.     CH = starting register
  3892.     CL = number of registers (>1)
  3893.     DX = group index (see AH=F2h)
  3894.     ES:BX -> buffer, CL bytes
  3895. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  3896.       compatibility box, and others
  3897. SeeAlso: AX=7F05h,AH=F1h,AH=F2h
  3898. ----------10F4-------------------------------
  3899. INT 10 - EGA Register Interface Library - READ REGISTER SET
  3900.     AH = F4h
  3901.     CX = number of registers to read (>1)
  3902.     ES:BX -> table of records (see below)
  3903. Return: register values in table filled in
  3904. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  3905.       compatibility box, and others
  3906. SeeAlso: AH=F0h,AH=F2h,AH=F5h
  3907.  
  3908. Format of entries in table of register records:
  3909. Offset    Size    Description
  3910.  00h    WORD    group index
  3911.         Pointer/data chips
  3912.            00h CRTC (3B4h mono modes, 3D4h color modes)
  3913.            08h Sequencer 3C4h
  3914.            10h Graphics Controller 3CEh
  3915.            18h Attribute Controller 3C0h
  3916.         Single registers
  3917.            20h Miscellaneous Output register 3C2h
  3918.            28h Feature Control register (3BAh mono modes, 3DAh color)
  3919.            30h Graphics 1 Position register 3CCh
  3920.            38h Graphics 2 Position register 3CAh
  3921.  02h    BYTE    register number (0 for single registers)
  3922.  03h    BYTE    register value
  3923. ----------10F5-------------------------------
  3924. INT 10 - EGA Register Interface Library - WRITE REGISTER SET
  3925.     AH = F5h
  3926.     CX = number of registers to write (>1)
  3927.     ES:BX -> table of records (see AH=F4h)
  3928. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  3929.       compatibility box, and others
  3930. SeeAlso: AX=7F05h,AH=F1h,AH=F3h,AH=F4h
  3931. ----------10F6------------------------------
  3932. INT 10 - EGA Register Interface Library - REVERT TO DEFAULT REGISTERS
  3933.     AH = F6h
  3934. Note:    provided by the Microsoft Mouse driver, OS/2 compatibility box, and
  3935.       others
  3936. SeeAlso: AH=F7h
  3937. ----------10F7------------------------------
  3938. INT 10 - EGA Register Interface Library - DEFINE DEFAULT REGISTER TABLE
  3939.     AH = F7h
  3940.     DX = port number
  3941.        Pointer/data chips
  3942.           00h CRTC (3B4h mono modes, 3D4h color modes)
  3943.           08h Sequencer 3C4h
  3944.           10h Graphics Controller 3CEh
  3945.           18h Attribute Controller 3C0h
  3946.        Single registers
  3947.           20h Miscellaneous Output register 3C2h
  3948.           28h Feature Control register (3BAh mono modes, 3DAh color modes)
  3949.           30h Graphics 1 Position register 3CCh
  3950.           38h Graphics 2 Position register 3CAh
  3951.     ES:BX -> table of one-byte entries, one byte to be written to each
  3952.          register
  3953. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  3954.       compatibility box, and others
  3955. SeeAlso: AH=F6h
  3956. ----------10FA--BX0000----------------------
  3957. INT 10 - EGA Register Interface Library - INTERROGATE DRIVER
  3958.     AH = FAh
  3959.     BX = 0000h
  3960. Return: BX = 0000h if mouse driver not present
  3961.     ES:BX -> EGA Register Interface version number, if present:
  3962.         byte 0 = major release number
  3963.         byte 1 = minor release number
  3964. Note:    the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
  3965.       compatibility box, and others
  3966. SeeAlso: AH=F6h,INT 2F/AX=BC00h
  3967. ----------10FA------------------------------
  3968. INT 10 - FASTBUFF.COM - INSTALLATION CHECK
  3969.     AH = FAh
  3970. Return: AX = 00FAh if installed
  3971.         ES = segment of resident code
  3972. Program: FASTBUFF.COM is a keyboard speedup/screen blanking utility by David
  3973.       Steiner
  3974. ----------10FE------------------------------
  3975. INT 10 - TopView - GET SHADOW BUFFER
  3976.     AH = FEh
  3977.     ES:DI -> assumed video buffer
  3978.         B800h:0000h color text/CGA graphics, B000h:0000h mono text,
  3979.           or A000h:0000h EGA/VGA graphics (RSIS environments only)
  3980. Return: ES:DI -> actual video buffer for calling process
  3981. Notes:    if no multitasker or RSIS-compliant environment is installed, ES:DI is
  3982.       returned unchanged; RSIS is the Relocated Screen Interface
  3983.       Specification
  3984.     for display pages other than 0, use AH=05h and AH=0Fh to determine
  3985.       whether a particular page exists
  3986.     TopView requires a call to AH=FFh to notify it that the screen has
  3987.       changed; DESQview will check for changes itself until the first call
  3988.       to AH=FFh
  3989. SeeAlso: AH=05h,AX=5201h,AH=FFh,INT 15/AX=1024h,INT 21/AH=2Bh"DESQview"
  3990. SeeAlso: INT 21/AH=ECh"DoubleDOS"
  3991. ----------10FF-------------------------------
  3992. INT 10 - TopView - UPDATE SCREEN FROM SHADOW BUFFER
  3993.     AH = FFh
  3994.     CX = number of consecutive changed characters
  3995.     ES:DI -> first changed character in shadow buffer
  3996. Notes:    avoid CX=0000h
  3997.     DESQview will discontinue the automatic screen updating initiated by
  3998.       AH=FEh after this call
  3999.     not supported (ignored) by DESQview/X 1.0x
  4000. SeeAlso: AH=FEh
  4001. ----------10FF-------------------------------
  4002. INT 10 - DJ GO32.EXE 80386+ DOS extender - VIDEO EXTENSIONS
  4003.     AH = FFh
  4004.     AL = video mode
  4005.         00h 80x25 text
  4006.         01h default text
  4007.         02h CXxDX text
  4008.         03h biggest text
  4009.         04h 320x200 graphics
  4010.         05h default graphics
  4011.         06h CXxDX graphics
  4012.         07h    biggest non-interlaced graphics
  4013.         08h biggest graphics
  4014. SeeAlso: AH=00h,INT 21/AH=FFh"GO32"
  4015. ----------10FF00-----------------------------
  4016. INT 10 - CARBON COPY PLUS v5.0 - CHECK IF CC CONNECTED TO CCHELP
  4017.     AX = FF00h
  4018. Return: BL = 00h not connected
  4019.        = 01h connected
  4020. SeeAlso: AX=FF01h,AX=FF02h
  4021. ----------10FF01-----------------------------
  4022. INT 10 - CARBON COPY PLUS v5.0 - DISCONNECT AND RESET LINE
  4023.     AX = FF01h
  4024. SeeAlso: AX=FF00h,AX=FF02h
  4025. ----------10FF02-----------------------------
  4026. INT 10 - CARBON COPY PLUS v5.0 - GET LAST PHONE NUMBER DIALED
  4027.     AX = FF02h
  4028. Return: ES:DI -> ASCIZ phone number
  4029. SeeAlso: AX=FF00h,AX=FF01h
  4030. ----------11---------------------------------
  4031. INT 11 - CPU-generated (80486+) - ALIGNMENT CHECK
  4032.    Bit AC in the EFLAGS register enables this interrupt on a memory reference
  4033.      on a mis-aligned address when in privilege mode 3.
  4034. ----------11---------------------------------
  4035. INT 11 - BIOS - GET EQUIPMENT LIST
  4036. Return: AX = BIOS equipment list word
  4037.         bits
  4038.         0      floppy disk(s) installed (see bits 6-7)
  4039.         1      80x87 coprocessor installed
  4040.         2,3      number of 16K banks of RAM on motherboard (PC only)
  4041.           number of 64K banks of RAM on motherboard (XT only)
  4042.         2      pointing device installed (PS)
  4043.         3      unused (PS)
  4044.         4-5      initial video mode
  4045.           00 EGA, VGA, or PGA
  4046.           01 40x25 color
  4047.           10 80x25 color
  4048.           11 80x25 monochrome
  4049.         6-7      number of floppies installed less 1 (if bit 0 set)
  4050.         8      DMA support installed (PCjr, some Tandy 1000s, 1400LT)
  4051.         9-11  number of serial ports installed
  4052.         12      game port installed
  4053.         13      serial printer attached (PCjr)
  4054.           internal modem installed (PC/Convertible)
  4055.         14-15 number of parallel ports installed
  4056. ---Compaq and many other 386/486 machines--
  4057.     EAX bit 23: page tables set so that Weitek coprocessor addressable in
  4058.             real mode
  4059.         bit 24: Weitek math coprocessor present
  4060. ---Compaq Systempro
  4061.     EAX bit 25: internal DMA parallel port available
  4062.         26: IRQ for internal DMA parallel port (if bit 25 set)
  4063.             0 = IRQ5
  4064.             1 = IRQ7
  4065.          27,28: parallel port DMA channel
  4066.             00 DMA channel 0
  4067.             01 DMA channel 0 ???
  4068.             10 reserved
  4069.             11 DMA channel 3
  4070. SeeAlso: INT 12
  4071. ----------11----SI6A6A-----------------------
  4072. INT 11 - Columbia Data Products Standard Device Level Protocol (SDLP) 1.6
  4073.     SI = 6A6Ah
  4074.     AH = command (see below)
  4075.     AL = SCSI Addressing
  4076.         bits 2-0 SCSI Target LUN (logical unit number)
  4077.         bits 5-3 SCSI Target ID
  4078.         bits 7-6 Host Adapter
  4079. Return: CF clear if successful
  4080.     CF set on error
  4081.         AL = error code
  4082. SeeAlso: INT 21/AX=4402"ASPI"
  4083.  
  4084. Values for SDLP command:
  4085.  00h SDLP initialization
  4086.  01h SDLP System Identify
  4087.  02h simple read sectors
  4088.  03h simple write sectors
  4089.  04h simple verify sectors/seek to sector
  4090.  05h get device size/type
  4091.  06h ready unit
  4092.  07h format unit
  4093.  08h diagnostics
  4094.  09h rewind
  4095.  0Ah erase
  4096.  0Bh write filemarks
  4097.  0Ch space
  4098.  0Dh prevent/allow media removal
  4099.  0Eh load/unload media
  4100.  0Fh reserved - returns good status
  4101.  10h set block size
  4102.  11h write setmark
  4103.  12h set error level
  4104.  13h get address of Request Sense Buffer
  4105.  14h get SDLP error via Request Sense
  4106.  F0h Vendor Unique Function (WD7000-FASST2 only)
  4107.  FDh reset current SCSI HAC
  4108.  FEh get/set current SCSI HAC
  4109.  FFh execute SCSI command
  4110. ----------11BC--DX1954-----------------------
  4111. INT 11 - BNU FOSSIL - INSTALLATION CHECK
  4112.     AH = BCh
  4113.     DX = 1954h
  4114. Return: AX = 1954h
  4115.     ES:DX -> entry point of driver (instead of INT 14)
  4116. ----------11FF--SI6A6A-----------------------
  4117. INT 11 - WD7000 SDLP interface - EXECUTE GENERIC SCSI COMMAND
  4118.     AH = FFh
  4119.     SI = 6A6Ah
  4120.     AL = SCSI Addressing
  4121.         bits 2-0 SCSI Target LUN (logical unit number)
  4122.         bits 5-3 SCSI Target ID
  4123.         bit 7    write flag, set for write operations, clear otherwise
  4124.     CX = bytes of data to be transmitted (max FFF0h)
  4125.     DH = 00h
  4126.     DL = length of SCSI Command Descriptor Block
  4127.     DS:DI -> SCSI Command Descriptor Block
  4128.     ES:BX -> data buffer
  4129. Return: CF set on error
  4130.         AL = error code
  4131.     CF clear if successful
  4132. Note:    because of busmaster operations with WD7000FASST avoid accessing
  4133.       video memory directly; check 386 memory manager for VDS support.
  4134.       The WD7000XTAT works with programmed IO and does not have this
  4135.       limitation.
  4136. SeeAlso: INT 21/AX=4402"ASPI"
  4137. ----------11FFFECXFFFE-----------------------
  4138. INT 11 - BACK&FORTH (before v1.62) API
  4139.     AX = FFFEh
  4140.     CX = FFFEh
  4141.     BX = function
  4142.         00h installation check
  4143.         Return: AX = 0001h BNFHIGH and BNFLOW both loaded
  4144.                = 0003h only BNFHIGH loaded
  4145.                else neither loaded
  4146.         01h ???
  4147.         Return: DX:AX -> ???
  4148.         02h ???
  4149.         03h ???
  4150.         04h ???
  4151.         05h ??? switches current PSP segment and stack if BNFLOW has not
  4152.             yet announced itself installed
  4153.         06h ???
  4154.         Return: AX = ???
  4155. SeeAlso: INT 12/AX=FFFEh
  4156. ----------12---------------------------------
  4157. INT 12 - BIOS - GET MEMORY SIZE
  4158. Return:    AX = kilobytes of contiguous memory starting at absolute address 00000h
  4159. Note:    this call returns the contents of the word at 0040h:0013h; in PC and
  4160.       XT, this value is set from the switches on the motherboard
  4161. SeeAlso: INT 11,INT 2F/AX=4A06h
  4162. ----------12----CX1806-----------------------
  4163. INT 12 - KEYBUI v2.0+ - INSTALLATION CHECK
  4164.     CX = 1806h
  4165. Return:    AX = kilobytes of contiguous memory starting at absolute address 00000h
  4166.     CX = 1960h if installed
  4167. Note:    KEYBUI is a resident keyboard driver by Johan Zwiekhorst which allows
  4168.       accented characters and box drawing on standard QWERTY keyboards; it
  4169.       also provides break-to-DOS and screen blanking capabilities
  4170. ----------12----CX1807-----------------------
  4171. INT 12 - PARKER v2.0+ - INSTALLATION CHECK
  4172.     CX = 1807h
  4173. Return:    AX = kilobytes of contiguous memory starting at absolute address 00000h
  4174.     CX = 1961h if installed
  4175. Note:    PARKER is an optionally-resident hard disk parking program by Johan
  4176.       Zwiekhorst
  4177. ----------12FFFECXFFFE-----------------------
  4178. INT 12 - Back&Forth v1.62+ - API
  4179.     AX = FFFEh
  4180.     CX = FFFEh
  4181.     BX = function
  4182.         00h installation check
  4183.         Return: AX = 0001h installed
  4184.                  else  not loaded
  4185.         02h build program ID list
  4186.         ES:DI -> buffer of at least 100 bytes, to be filled with words
  4187.         Return: AX = number of programs defined
  4188.             ES:DI buffer filled with AX words
  4189.         03h switch to specified task (task need not be open yet)
  4190.         DX = two-letter program ID
  4191.         Return: AX = 0000h if task undefined
  4192.         04h ???
  4193.         05h    ???
  4194.         06h    get version (undoc)
  4195.         Return: AX = version * 100 (v1.71 = 00ABh)
  4196.         07h ???
  4197.         08h get open tasks (undoc)
  4198.         ES:DI -> task info buffer (see below)
  4199.         Return: AX = number of open tasks (max 20)
  4200.         09h    ???
  4201. Note:    Back & Forth is a task switcher by Progressive Solutions, Inc.
  4202. SeeAlso: INT 11/AX=FFFEh
  4203.  
  4204. Format of task info buffer:
  4205. Offset    Size    Description
  4206.  00h 21 BYTEs    ASCIZ task name
  4207.  15h    BYTE    hotkey shift state (as for INT 16/AH=02h)
  4208.  16h    WORD    hotkey scan code
  4209.  18h    WORD    program ID
  4210. ----------1300-------------------------------
  4211. INT 13 - DISK - RESET DISK SYSTEM
  4212.     AH = 00h
  4213.     DL = drive (if bit 7 is set both hard disks and floppy disks reset)
  4214. Return: AH = status (see AH=01h)
  4215.     CF clear if successful (returned AH=00h)
  4216.     CF set on error
  4217. Note:    forces controller to recalibrate drive heads (seek to track 0)
  4218. SeeAlso: AH=0Dh,AH=11h,INT 21/AH=0Dh,INT 4E"TI Professional"
  4219. ----------1301-------------------------------
  4220. INT 13 - DISK - GET STATUS OF LAST OPERATION
  4221.     AH = 01h
  4222.     DL = drive (bit 7 set for hard disk)
  4223. Return: CF clear if successful (returned status 00h)
  4224.     CF set on error
  4225.     AH = status of previous operation
  4226.         00h successful completion
  4227.         01h invalid function in AH or invalid parameter
  4228.         02h address mark not found
  4229.         03h disk write-protected (floppy)
  4230.         04h sector not found
  4231.         05h reset failed (hard disk)
  4232.         06h disk changed (floppy)
  4233.         07h drive parameter activity failed (hard disk)
  4234.         08h DMA overrun
  4235.         09h attempted DMA across 64K boundary
  4236.         0Ah bad sector detected (hard disk)
  4237.         0Bh bad track detected (hard disk)
  4238.         0Ch unsupported track or invalid media
  4239.         0Dh invalid number of sectors on format (hard disk)
  4240.         0Eh control data address mark detected (hard disk)
  4241.         0Fh DMA arbitration level out of range (hard disk)
  4242.         10h uncorrectable CRC or ECC error on read
  4243.         11h data ECC corrected (hard disk)
  4244.         20h controller failure
  4245.         40h seek failed
  4246.         80h timeout (not ready)
  4247.         AAh drive not ready (hard disk)
  4248.         BBh undefined error (hard disk)
  4249.         CCh write fault (hard disk)
  4250.         E0h status register error (hard disk)
  4251.         FFh sense operation failed (hard disk)
  4252. Note:    some BIOSes return the status in AL; the PS/2 Model 30/286 returns the
  4253.       status in both AH and AL
  4254. ----------1302-------------------------------
  4255. INT 13 - DISK - READ SECTOR(S) INTO MEMORY
  4256.     AH = 02h
  4257.     AL = number of sectors to read (must be nonzero)
  4258.     CH = low eight bits of cylinder number
  4259.     CL = sector number (bits 0-5)
  4260.          high two bits of cylinder (bits 6-7, hard disk only)
  4261.     DH = head number
  4262.     DL = drive number (bit 7 set for hard disk)
  4263.     ES:BX -> data buffer
  4264. Return: CF set on error
  4265.         if AH = 11h (corrected ECC error), AL = burst length
  4266.     CF clear if successful
  4267.     AH = status (see AH=01h)
  4268.     AL = number of sectors transferred
  4269. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  4270.       enough; the read should be retried at least three times, resetting
  4271.       the disk with AH=00h between attempts
  4272.     AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  4273.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  4274. SeeAlso: AH=03h,AH=0Ah
  4275. ----------1303-------------------------------
  4276. INT 13 - DISK - WRITE DISK SECTOR(S)
  4277.     AH = 03h
  4278.     AL = number of sectors to write (must be nonzero)
  4279.     CH = low eight bits of cylinder number
  4280.     CL = sector number (bits 0-5)
  4281.          high two bits of cylinder (bits 6-7, hard disk only)
  4282.     DH = head number
  4283.     DL = drive number (bit 7 set for hard disk)
  4284.     ES:BX -> data buffer
  4285. Return: CF set on error
  4286.     CF clear if successful
  4287.     AH = status (see AH=01h)
  4288.     AL = number of sectors transferred
  4289. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  4290.       enough; the write should be retried at least three times, resetting
  4291.       the disk with AH=00h between attempts
  4292.     AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  4293.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  4294. SeeAlso: AH=02h,AH=0Bh
  4295. ----------1304-------------------------------
  4296. INT 13 - DISK - VERIFY DISK SECTOR(S)
  4297.     AH = 04h
  4298.     AL = number of sectors to verify (must be nonzero)
  4299.     CH = low eight bits of cylinder number
  4300.     CL = sector number (bits 0-5)
  4301.          high two bits of cylinder (bits 6-7, hard disk only)
  4302.     DH = head number
  4303.     DL = drive number (bit 7 set for hard disk)
  4304.     ES:BX -> data buffer (PC,XT,AT with BIOS prior to 11/15/85)
  4305. Return: CF set on error
  4306.     CF clear if successful
  4307.     AH = status (see AH=01h)
  4308.     AL = number of sectors verified
  4309. Notes:    errors on a floppy may be due to the motor failing to spin up quickly
  4310.       enough; the write should be retried at least three times, resetting
  4311.       the disk with AH=00h between attempts
  4312.     this function does not compare the disk with memory, it merely
  4313.       checks whether the sector's stored CRC matches the data's actual CRC
  4314.     AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  4315.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  4316. SeeAlso: AH=02h
  4317. ----------1305-------------------------------
  4318. INT 13 - FLOPPY - FORMAT TRACK
  4319.     AH = 05h
  4320.     AL = number of sectors to format
  4321.     CH = track number
  4322.     DH = head number
  4323.     DL = drive number
  4324.     ES:BX -> address field buffer (see below)
  4325. Return: CF set on error
  4326.     CF clear if successful
  4327.     AH = status (see AH=01h)
  4328. Notes:    on AT or higher, call AH=17h first
  4329.     the number of sectors per track is read from the diskette parameter
  4330.       table pointed at by INT 1E
  4331. SeeAlso: AH=05h"FIXED",AH=17h,AH=18h,INT 1E
  4332.  
  4333. Format of address field buffer entry (one per sector in track):
  4334. Offset    Size    Description
  4335.  00h    BYTE    track number
  4336.  01h    BYTE    head number (0-based)
  4337.  02h    BYTE    sector number
  4338.  03h    BYTE    sector size (00h=128 bytes, 01h=256 bytes, 02h=512, 03h=1024)
  4339. ----------1305-------------------------------
  4340. INT 13 - FIXED DISK - FORMAT TRACK
  4341.     AH = 05h
  4342.     AL = interleave value (XT-type controllers only)
  4343.     ES:BX -> 512-byte format buffer
  4344.         the first 2*(sectors/track) bytes contain F,N for each sector
  4345.            F = 00h for good sector, 80h for bad sector
  4346.            N = sector number
  4347.     CH = cylinder number (bits 8,9 in high bits of CL)
  4348.     CL = high bits of cylinder number (bits 7,6)
  4349.     DH = head
  4350.     DL = drive
  4351. Return: AH = status code (see AH=01h)
  4352. Notes:    AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  4353.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  4354.     for XT-type controllers on an AT or higher, AH=0Fh should be called
  4355.       first
  4356. SeeAlso: AH=05h"FLOPPY",AH=06h"FIXED",AH=07h"FIXED",AH=0Fh,AH=18h,AH=1Ah
  4357. ----------1305-------------------------------
  4358. INT 13 - Future Domain SCSI BIOS - SEND SCSI MODE SELECT COMMAND
  4359.     AH = 05h
  4360.     DL = hard drive ID
  4361.     ES:BX -> mode select data (see below)
  4362. Return: CF set on error
  4363.     AH = status code (see AH=01h)
  4364. Notes:    this function can be called before AH=07h"SCSI" or AH=06h"SCSI" to 
  4365.       format a SCSI disk with the desired parameters
  4366.     the mode select data below is from the SCSI-1 specification
  4367. SeeAlso: AH=06h"SCSI",AH=07h"SCSI"
  4368.  
  4369. Format of mode select data:
  4370. Offset    Size    Description
  4371.  00h    BYTE    number of bytes of remaining data (12 + vendor unique length)
  4372.  01h    BYTE    reserved (0)
  4373.  02h    BYTE    medium type (0 for hard disk)
  4374.  03h    BYTE    reserved (0)
  4375.  04h    BYTE    block descriptor length (8)
  4376.  05h    BYTE    density code (0 for hard disk)
  4377.  06h  3 BYTEs    number of blocks (big-endian) (000000h for entire disk)
  4378.  09h    BYTE    reserved (0)
  4379.  0Ah  3 BYTEs    block length (big-endian) (512 standard, or 256)
  4380.  0Dh    ???    vendor-specific parameter bytes (optional)
  4381. ----------1306-------------------------------
  4382. INT 13 - FIXED DISK - FORMAT TRACK AND SET BAD SECTOR FLAGS (XT,PORT)
  4383.     AH = 06h
  4384.     AL = interleave value
  4385.     CH = cylinder number (bits 8,9 in high bits of CL)
  4386.     CL = sector number
  4387.     DH = head
  4388.     DL = drive
  4389. Return: AH = status code (see AH=01h)
  4390. Note:    AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  4391.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  4392. SeeAlso: AH=05h"FIXED",AH=07h"FIXED"
  4393. ----------1306-------------------------------
  4394. INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE WITH BAD SECTOR MAPPING
  4395.     AH = 06h
  4396.     AL = interleave
  4397.          (0 = default, 1 = consecutive sectors, 2 - 255 = vendor unique)
  4398.     DL = hard drive ID
  4399.     DH = bits 7-5 drive LUN
  4400.          bit 4    defect list is available
  4401.          bit 3    defect list is complete (erase drive's defect list)
  4402.          bits 2-0 defect table format
  4403.               (000=use defect table A, 100=use defect table B,
  4404.               101=use defect table C)
  4405.     ES:BX ->  defect table A, B or C (see below)
  4406. Return: CF set on error
  4407.     AH = status code (see AH=01h)
  4408. Notes:    block addresses must be in ascending order (for table B, cylinder is
  4409.       most significant, byte from index least significant; for table C,
  4410.       cylinder is most significant, sector number least significant)
  4411.     table B defect bytes from index of FFFFFFFFh indicates that the entire
  4412.       track shall be reassigned
  4413.     table C defect sector number of FFFFFFFFh indicates that the entire
  4414.       track shall be reassigned
  4415. SeeAlso: AH=05h"SCSI",AH=06h"FIXED",AH=07h"SCSI"
  4416.  
  4417. Format of defect table A:
  4418. Offset    Size    Description
  4419.  00h    WORD    number of bytes remaining in table
  4420.  02h    BYTE    reserved (0)
  4421.  03h    BYTE    reserved (0)
  4422.  04h    WORD    defect list length (big-endian) (4*number of defects)
  4423.  06h  4 DWORDs    defect block addresses (big-endian)
  4424.  
  4425. Format of defect table B:
  4426. Offset    Size    Description
  4427.  00h    WORD    number of bytes remaining in table
  4428.  02h    BYTE    reserved (0)
  4429.  03h    BYTE    reserved (0)
  4430.  04h    WORD    defect list length (big-endian) (8*number of defects)
  4431.  06h 8N BYTEs    Defect List [array]
  4432.     Offset    Size    Description
  4433.      00h  3 BYTEs    cylinder number of defect (big-endian)
  4434.      03h    BYTE    head number of defect
  4435.      04h    DWORD    defect bytes from index (big-endian)
  4436.  
  4437. Format of defect table C:
  4438. Offset    Size    Description
  4439.  00h    WORD    number of bytes remaining in table
  4440.  02h    BYTE    reserved (0)
  4441.  03h    BYTE    reserved (0)
  4442.  04h    WORD    defect list length (big-endian) (8*number of defects)
  4443.  06h 8N BYTEs    defect list
  4444.     Offset    Size    Description
  4445.      00h  3 BYTEs    cylinder number of defect (big-endian)
  4446.      03h    BYTE    head number of defect
  4447.      04h    DWORD    defect sector number (big-endian)
  4448. ----------1307-------------------------------
  4449. INT 13 - FIXED DISK - FORMAT DRIVE STARTING AT GIVEN TRACK (XT,PORT)
  4450.     AH = 07h
  4451.     AL = interleave value (XT only)
  4452.     ES:BX = 512-byte format buffer (see AH=05h)
  4453.     CH = cylinder number (bits 8,9 in high bits of CL)
  4454.     CL = sector number
  4455.     DH = head
  4456.     DL = drive
  4457. Return: AH = status code (see AH=01h)
  4458. Note:    AWARD AT BIOS extended to handle more than 1024 cylinders by placing
  4459.       bits 10 and 11 of the cylinder number into bits 6 and 7 of DH
  4460. SeeAlso: AH=05h"FIXED",AH=06h"FIXED",AH=1Ah
  4461. ----------1307-------------------------------
  4462. INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE
  4463.     AH = 07h
  4464.     AL = interleave (0 = default, 1 = consecutive sectors, 
  4465.            2 - 255 = vendor unique)
  4466.     DL = hard drive ID
  4467. Return: CF set on error
  4468.     AH = status code (see AH=01h)
  4469. SeeAlso: AH=05h"SCSI",AH=06h"SCSI",AH=07h"FIXED"
  4470. ----------1308-------------------------------
  4471. INT 13 - DISK - GET DRIVE PARAMETERS (PC,XT286,CONV,PS,ESDI,SCSI)
  4472.     AH = 08h
  4473.     DL = drive (bit 7 set for hard disk)
  4474. Return: CF set on error
  4475.         AH = status (07h) (see AH=01h)
  4476.     CF clear if successful
  4477.         AH = 00h
  4478.         BL = drive type (AT/PS2 floppies only)
  4479.         01h 360K
  4480.         02h 1.2M
  4481.         03h 720K
  4482.         04h 1.44M
  4483.         06h ??? (checked by 386MAX v6.01)
  4484.         CH = low eight bits of maximum cylinder number
  4485.         CL = maximum sector number (bits 5-0)
  4486.          high two bits of maximum cylinder number (bits 7-6)
  4487.         DH = maximum head number
  4488.         DL = number of drives
  4489.         ES:DI -> drive parameter table (floppies only)
  4490. Notes:    may return successful even though specified drive is greater than the
  4491.       number of attached drives of that type (floppy/hard); check DL to
  4492.       ensure validity
  4493.     for systems predating the IBM AT, this call is only valid for hard
  4494.       disks, as it is implemented by the hard disk BIOS rather than the
  4495.       ROM BIOS
  4496.     Toshiba laptops with HardRAM return DL=02h when called with DL=80h,
  4497.       but fail on DL=81h.  The BIOS data at 40h:75h correctly reports 01h.
  4498. SeeAlso: AH=15h,INT 1E,INT 41
  4499. ----------1309-------------------------------
  4500. INT 13 - HARD DISK - INITIALIZE CONTROLLER WITH DRIVE PARAMETERS (AT,PS)
  4501.     AH = 09h
  4502.     DL = drive (80h for first, 81h for second)
  4503. Return: CF clear if successful
  4504.     CF set on error
  4505.     AH = status (see AH=01h)
  4506. Notes:    on the PC and XT, this function uses the parameter table pointed at by
  4507.       INT 41
  4508.     on the AT and later, this function uses the parameter table pointed at
  4509.       by INT 41 if DL=80h, and the parameter table pointed at by INT 46 if
  4510.       DL=81h
  4511. SeeAlso: INT 41,INT 46
  4512. ----------130A-------------------------------
  4513. INT 13 - HARD DISK - READ LONG SECTOR(S) (AT and later)
  4514.     AH = 0Ah
  4515.     AL = number of sectors
  4516.     CH = low eight bits of cylinder number
  4517.     CL = sector number (bits 5-0)
  4518.          high two bits of cylinder number (bits 7-6)
  4519.     DH = head number
  4520.     DL = drive number (80h = first, 81h = second)
  4521.     ES:BX -> data buffer
  4522. Return: CF clear if successful
  4523.     CF set on error
  4524.     AH = status (see AH=01h)
  4525.     AL = number of sectors transferred
  4526. Notes:    this function reads in four to seven bytes of error-correcting code
  4527.       along with each sector's worth of information
  4528.     data errors are not automatically corrected, and the read is aborted
  4529.       after the first sector with an ECC error
  4530.     used for diagnostics only on PS/2 systems
  4531. SeeAlso: AH=02h,AH=0Bh
  4532. ----------130B-------------------------------
  4533. INT 13 - HARD DISK - WRITE LONG SECTOR(S) (AT and later)
  4534.     AH = 0Bh
  4535.     AL = number of sectors
  4536.     CH = low eight bits of cylinder number
  4537.     CL = sector number (bits 5-0)
  4538.          high two bits of cylinder number (bits 7-6)
  4539.     DH = head number
  4540.     DL = drive number (80h = first, 81h = second)
  4541.     ES:BX -> data buffer
  4542. Return: CF clear if successful
  4543.     CF set on error
  4544.     AH = status (see AH=01h)
  4545.     AL = number of sectors transferred
  4546. Notes:    each sector's worth of data must be followed by four to seven bytes of
  4547.       error-correction information
  4548.     used for diagnostics only on PS/2 systems
  4549. SeeAlso: AH=03h,AH=0Ah
  4550. ----------130C-------------------------------
  4551. INT 13 - HARD DISK - SEEK TO CYLINDER
  4552.     AH = 0Ch
  4553.     CH = low eight bits of cylinder number
  4554.     CL = sector number (bits 5-0)
  4555.          high two bits of cylinder number (bits 7-6)
  4556.     DH = head number
  4557.     DL = drive number (80h = first, 81h = second hard disk)
  4558. Return: CF set on error
  4559.     CF clear if successful
  4560.     AH = status (see AH=01h)
  4561. SeeAlso: AH=00h,AH=02h,AH=0Ah
  4562. ----------130D-------------------------------
  4563. INT 13 - HARD DISK - RESET HARD DISKS
  4564.     AH = 0Dh
  4565.     DL = drive number (80h = first, 81h = second hard disk)
  4566. Return: CF set on error
  4567.     CF clear if successful
  4568.     AH = status (see AH=01h)
  4569. Notes:    reinitializes the hard disk controller, resets the specified drive's
  4570.       parameters, and recalibrates the drive's heads (seek to track 0)
  4571.     not for PS/2 ESDI drives
  4572. SeeAlso: AH=00h,INT 21/AH=0Dh
  4573. ----------130E-------------------------------
  4574. INT 13 - HARD DISK - READ SECTOR BUFFER (XT only)
  4575.     AH = 0Eh
  4576.     DL = drive number (80h = first, 81h = second hard disk)
  4577.     ES:BX -> buffer
  4578. Return: CF set on error
  4579.     CF clear if successful
  4580.     AH = status code (see AH=01h)
  4581. Notes:    transfers controller's sector buffer.  No data is read from the drive
  4582.     used for diagnostics only on PS/2 systems
  4583. SeeAlso: AH=0Ah
  4584. ----------130F-------------------------------
  4585. INT 13 - HARD DISK - WRITE SECTOR BUFFER (XT only)
  4586.     AH = 0Fh
  4587.     DL = drive number (80h = first, 81h = second hard disk)
  4588.     ES:BX -> buffer
  4589. Return: CF set on error
  4590.     CF clear if successful
  4591.     AH = status code (see AH=01h)
  4592. Notes:    does not write data to the drive
  4593.     should be called before formatting to initialize an XT-type
  4594.       controller's sector buffer
  4595.     used for diagnostics only on PS/2 systems
  4596. SeeAlso: AH=0Bh
  4597. ----------1310-------------------------------
  4598. INT 13 - HARD DISK - CHECK IF DRIVE READY
  4599.     AH = 10h
  4600.     DL = drive number (80h = first, 81h = second hard disk)
  4601. Return: CF set on error
  4602.     CF clear if successful
  4603.     AH = status (see AH=01h)
  4604. ----------1311-------------------------------
  4605. INT 13 - HARD DISK - RECALIBRATE DRIVE
  4606.     AH = 11h
  4607.     DL = drive number (80h = first, 81h = second hard disk)
  4608. Return:    CF set on error
  4609.     CF clear if successful
  4610.     AH = status (see AH=01h)
  4611. Note:    causes hard disk controller to seek the specified drive to cylinder 0
  4612. SeeAlso: AH=00h,AH=0Ch,AH=19h"FIXED DISK"
  4613. ----------1312-------------------------------
  4614. INT 13 - HARD DISK - CONTROLLER RAM DIAGNOSTIC (XT,PS)
  4615.     AH = 12h
  4616.     DL = drive number (80h = first, 81h = second hard disk)
  4617. Return: CF set on error
  4618.     CF clear if successful
  4619.     AH = status code (see AH=01h)
  4620. SeeAlso: AH=13h,AH=14h
  4621. ----------1312-------------------------------
  4622. INT 13 - Future Domain SCSI CONTROLLER - STOP SCSI DISK
  4623.     AH = 12h
  4624.     DL = hard drive ID
  4625. Return: CF set on error
  4626.     AH = status code (see AH=01h)
  4627. Notes:    available at least on the TMC-870 8-bit SCSI controller BIOS v6.0A
  4628.     if the given drive is a SCSI device, the SCSI Stop Unit command is sent
  4629.       and either "Disk prepared for shipping" or "Disk Stop command failed"
  4630.       is displayed
  4631. ----------1313-------------------------------
  4632. INT 13 - HARD DISK - DRIVE DIAGNOSTIC (XT,PS)
  4633.     AH = 13h
  4634.     DL = drive number (80h = first, 81h = second hard disk)
  4635. Return: CF set on error
  4636.     CF clear if successful
  4637.     AH = status code (see AH=01h)
  4638. SeeAlso: AH=12h,AH=14h
  4639. ----------1314-------------------------------
  4640. INT 13 - HARD DISK - CONTROLLER INTERNAL DIAGNOSTIC
  4641.     AH = 14h
  4642. Return: CF set on error
  4643.     CF clear if successful
  4644.     AH = status code (see AH=01h)
  4645. SeeAlso: AH=12h,AH=13h
  4646. ----------1315-------------------------------
  4647. INT 13 - DISK - GET DISK TYPE (XT 1/10/86 or later,XT286,AT,PS)
  4648.     AH = 15h
  4649.     DL = drive number (bit 7 set for hard disk)
  4650. Return:    CF clear if successful
  4651.         AH = type code
  4652.         00h no such drive
  4653.         01h floppy without change-line support
  4654.         02h floppy with change-line support
  4655.         03h hard disk
  4656.             CX:DX = number of 512-byte sectors
  4657.     CF set on error
  4658.         AH = status (see AH=01h)
  4659. SeeAlso: AH=08h,AH=16h,AH=17h,AH=19h"SCSI"
  4660. ----------1316-------------------------------
  4661. INT 13 - FLOPPY DISK - DETECT DISK CHANGE (XT 1/10/86 or later,XT286,AT,PS)
  4662.     AH = 16h
  4663.     DL = drive number
  4664. Return: CF clear if change line inactive
  4665.         AH = 00h (disk not changed)
  4666.     CF set if change line active
  4667.         AH = 06h change line active or not supported
  4668.            = 80h drive not ready or not present
  4669. Note:    call AH=15h first to determine whether the drive supports a change
  4670.       line
  4671. SeeAlso: AH=15h
  4672. ----------1317-------------------------------
  4673. INT 13 - FLOPPY DISK - SET DISK TYPE FOR FORMAT (AT,PS)
  4674.     AH = 17h
  4675.     AL = format type
  4676.         01h = 320/360K disk in 360K drive
  4677.         02h = 320/360K disk in 1.2M drive
  4678.         03h = 1.2M disk in 1.2M drive
  4679.         04h = 720K disk in 720K drive
  4680.     DL = drive number
  4681. Return: CF set on error
  4682.     CF clear if successful
  4683.     AH = status (see AH=01h)
  4684. Note:    this function does not handle 1.44M drives; use AH=18h instead
  4685. SeeAlso: AH=15h,AH=18h
  4686. ----------1318-------------------------------
  4687. INT 13 - DISK - SET MEDIA TYPE FOR FORMAT (AT model 3x9,XT2,XT286,PS)
  4688.     AH = 18h
  4689.     DL = drive number
  4690.     CH = lower 8 bits of highest cylinder number (number of cylinders - 1)
  4691.     CL = sectors per track (bits 0-5)
  4692.          top 2 bits of highest cylinder number (bits 6,7)
  4693. Return: AH = status
  4694.         00h requested combination supported
  4695.         01h function not available
  4696.         0Ch not supported or drive type unknown
  4697.         80h there is no disk in the drive
  4698.     ES:DI -> 11-byte parameter table
  4699. SeeAlso: AH=05h,AH=07h,AH=17h
  4700. ----------1318-------------------------------
  4701. INT 13 - Future Domain SCSI BIOS - GET SCSI CONTROLLER INFORMATION
  4702.     AH = 18h
  4703.     DL = hard drive ID
  4704. Return: CF set on error
  4705.         AH = status code (see AH=01h)
  4706.     CF clear if successful
  4707.         AX = 4321h (magic number)
  4708.         CX = controller family code
  4709.         0203h TMC-1650/1660/1670/1680 (ROM 2.0)
  4710.             BH = number of exclusively ROM-controlled SCSI devices
  4711.             BL = canonical SCSI device number for specified drive
  4712.         040Ah TMC-820/830/840/850/860/870/875/880/885 (ROM <= 6.0A)
  4713.             BH = number of exclusively ROM-controlled SCSI devices
  4714.             BL = canonical SCSI device number for specified drive
  4715.         050Dh TMC-840/841/880/881 (ROM 5.2D)
  4716.             BH = number of exclusively ROM-controlled SCSI devices
  4717.             BL = canonical SCSI device number for specified drive
  4718.         0700h TMC-830/850/860/875/885 (ROM 7.0)
  4719.             DH = number of exclusively ROM-controlled SCSI devices
  4720.             DL = canonical SCSI device number for specified drive
  4721. Note:    also sets an internal flag (non-resettable) which prevents some
  4722.       controller messages from being displayed, allows writes to
  4723.       removable devices (use caution!), and enables the INT 13 interface
  4724.       for more than one drive (i.e. DL >= 81h) in at least some ROM
  4725.       versions
  4726. SeeAlso: AH=05h"SCSI",AH=1Bh"SCSI"
  4727. ----------1319-------------------------------
  4728. INT 13 - FIXED DISK - PARK HEADS (XT286,PS)
  4729.     AH = 19h
  4730.     DL = drive
  4731. Return: CF set on error
  4732.     AH = status (see AH=01h)
  4733. SeeAlso: AH=11h
  4734. ----------1319-------------------------------
  4735. INT 13 - Future Domain SCSI CONTROLLER - REINITIALIZE DRIVE
  4736.     AH = 19h
  4737.     DL = hard drive ID
  4738. Return: CF set on error
  4739.         AH = status code (see AH=01h)
  4740.     CF clear if successful
  4741.         AH = disk type (03h = fixed disk)
  4742.         CX:DX = number of 512-byte sectors
  4743. Notes:    sends SCSI Read Capacity command to get number of logical blocks and
  4744.       adjusts the result for 512-byte sectors
  4745.     displays either "Error in Read Capacity Command" or "nnn Bytes per
  4746.       sector" (nnn=256 or 512, the only sizes supported in the translation
  4747.       code)
  4748.     should probably be called when a removable device has its media changed
  4749.     returns the same values as AH=15h
  4750. SeeAlso: AH=15h,AH=1Ah
  4751. ----------131A-------------------------------
  4752. INT 13 - ESDI FIXED DISK - FORMAT UNIT (PS)
  4753.     AH = 1Ah
  4754.     AL = defect table count
  4755.     CL = format modifiers
  4756.         bit 4: generate periodic interrupt
  4757.         bit 3: perform surface analysis
  4758.         bit 2: update secondary defect map
  4759.         bit 1: ignore secondary defect map
  4760.         bit 0: ignore primary defect map
  4761.     DL = drive
  4762.     ES:BX -> defect table
  4763. Return: CF set on error
  4764.     AH = status (see AH=01h)
  4765. Note:    if periodic interrupt selected, INT 15/AH=0Fh is called after each
  4766.       cylinder is formatted
  4767. SeeAlso: AH=07h,INT 15/AH=0Fh
  4768. ----------131A-------------------------------
  4769. INT 13 - Future Domain SCSI CONTROLLER - GET SCSI PARTIAL MEDIUM CAPACITY
  4770.     AH = 1Ah
  4771.     CH = track (bits 8,9 in high bits of CL)
  4772.     CL = sector (01h to number of sectors/track for drive)
  4773.     DH = head
  4774.     DL = hard drive ID
  4775. Return: CF set on error
  4776.     AH = status code (see AH=01h)
  4777.     CX:DX = logical block number of last quickly-accessible block after
  4778.         given block
  4779. Note:    sends SCSI Read Capacity command with the PMI bit set to obtain the
  4780.       logical block address of the last block after which a substantial
  4781.       delay in data transfer will be encountered (usually the last block
  4782.       on the current cylinder).  No translation to 512 byte sectors is
  4783.       performed on the result if data is stored on the disk in other than
  4784.       512 byte sectors.
  4785. SeeAlso: AH=15h,AH=19h"SCSI"
  4786. ----------131B-------------------------------
  4787. INT 13 - ESDI FIXED DISK - GET MANUFACTURING HEADER
  4788.     AH = 1Bh
  4789.     AL = number of record
  4790.     DL = drive
  4791.     ES:BX -> buffer for manufacturing header (defect list)
  4792. Return: CF set on error
  4793.         AH = status
  4794. Note:    manufacturing header format (Defect Map Record format) can be found
  4795.       in IBM 70MB, 115MB Fixed Disk Drives Technical Reference
  4796. ----------131B-------------------------------
  4797. INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO SCSI DISK INFO BLOCK
  4798.     AH = 1Bh
  4799.     DL = hard drive ID
  4800. Return: CF set on error
  4801.         AH = status code (see AH=01h)
  4802.     CF clear if successful
  4803.         ES:BX -> SCSI disk information block
  4804. Note:    also sets a non-resettable flag which prevents some controller messages
  4805.       from being displayed
  4806. SeeAlso: AH=18h"SCSI",AH=1Ch"SCSI"
  4807.  
  4808. Format of SCSI disk information block:
  4809. Offset    Size    Description
  4810.  00h    BYTE    drive physical information
  4811.         bit 0: ???
  4812.         bit 1: device uses parity
  4813.         bit 2: 256 bytes per sector instead of 512
  4814.         bit 3: don't have capacity yet???
  4815.         bit 4: disk is removable
  4816.         bit 5: logical unit number is not present
  4817.  01h    WORD    translated number of cylinders
  4818.  03h    BYTE    translated number of heads
  4819.  04h    BYTE    translated number of sectors per track (17, 34, or 63)
  4820.  05h    BYTE    drive address
  4821.         bits 0-2: logical unit number
  4822.         bits 3-5: device number
  4823.  06h    BYTE    01h at initialization
  4824.  07h    BYTE    sense code byte 00h, or extended sense code byte 0Ch
  4825.  08h    BYTE    00h
  4826.  09h    BYTE    00h or extended sense code byte 02h (sense key)
  4827.  0Ah    BYTE    00h
  4828.  0Bh 10 BYTEs    copy of Command Descriptor Block (CDB)
  4829.  15h    DWORD    translated number of sectors on device
  4830. ----------131C-------------------------------
  4831. INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO FREE CONTROLLER RAM
  4832.     AH = 1Ch
  4833.     DL = hard drive ID (any valid SCSI hard disk)
  4834. Return: CF set on error
  4835.         AH = status code (see AH=01h)
  4836.     CF clear if successful
  4837.         ES:BX -> first byte of free RAM on controller
  4838. Notes:    the Future Domain TMC-870 contains 1024 bytes of RAM at offsets 1800h
  4839.       to 1BFFh on-bard the controller for storing drive information and
  4840.       controller status; ES:BX points to the first byte available for other
  4841.       uses
  4842.     ES contains the segment at which the controller resides; the
  4843.       controller's two memory-mapped I/O ports are at offsets 1C00h, 1E00h
  4844. SeeAlso: AH=1Bh"SCSI"
  4845. ----------131C0A-----------------------------
  4846. INT 13 - ESDI FIXED DISK - GET DEVICE CONFIGURATION
  4847.     AX = 1C0Ah
  4848.     DL = drive
  4849.     ES:BX -> buffer for device configuration (drive physical parameter)
  4850. Return: CF set on error
  4851.         AH = status
  4852. Note:    device configuration format can be found in IBM ESDI Fixed Disk Drive
  4853.       Adapter/A Technical Reference
  4854. ----------131C0B-----------------------------
  4855. INT 13 - ESDI FIXED DISK - GET ADAPTER CONFIGURATION
  4856.     AX = 1C0Bh
  4857.     ES:BX -> buffer for adapter configuration
  4858. Return: CF set on error
  4859.         AH = status
  4860. SeeAlso: AX=1C0Ch
  4861. ----------131C0C-----------------------------
  4862. INT 13 - ESDI FIXED DISK - GET POS INFORMATION
  4863.     AX = 1C0Ch
  4864.     ES:BX -> POS information
  4865. Return: CF set on error
  4866.         AH = status
  4867. SeeAlso: AX=1C0Bh
  4868. ----------131C0E-----------------------------
  4869. INT 13 - ESDI FIXED DISK - TRANSLATE RBA TO ABA
  4870.     AX = 1C0Eh
  4871.     CH = low 8 bits of cylinder number
  4872.     CL = sector number, high two bits of cylinder number in bits 6 and 7
  4873.     DH = head number
  4874.     DL = drive number
  4875.     ES:BX -> ABA number
  4876. Return: CF set on error
  4877.         AH = status
  4878. Note:    ABA (absolute block address) format can be found in IBM ESDI Adapter
  4879.       Technical Reference by using its Device Configuration Status Block
  4880. ----------131D-------------------------------
  4881. INT 13 - IBMCACHE.SYS - CACHE STATUS
  4882.     AH = 1Dh
  4883.     AL = subfunction
  4884.         01h get status record
  4885.         DL = drive???
  4886.         Return: ES:BX -> status record
  4887.             CF set on error
  4888.                 AH = error code
  4889.         02h set cache status
  4890.         ES:BX -> status record
  4891.         DL = drive???
  4892.         Return: CF set on error
  4893.  
  4894. Format of status record:
  4895. Offset    Size    Description
  4896.  00h    DWORD    total number of read requests
  4897.  04h    DWORD    total number of hits
  4898.  08h    DWORD    number of physical disk reads
  4899.  0Ch    DWORD    total number of sectors requested by physical disk reads
  4900.  10h  6 bytes    ???
  4901.  16h    DWORD    pointer to start of error list
  4902.  1Ah    DWORD    pointer to end of error list
  4903.  1Eh    WORD    ???
  4904.  20h    BYTE    using extended memory if nonzero
  4905.  21h    BYTE    ???
  4906.  22h  4 BYTEs    ASCII version number
  4907.  26h    WORD    cache size in K
  4908.  28h    WORD    sectors per page
  4909.  
  4910. Format of error list:
  4911. Offset    Size    Description
  4912.  00h    DWORD    relative block address of bad page
  4913.  04h    BYTE    drive
  4914.  05h    BYTE    sector bit-map
  4915.  06h    WORD    next error
  4916. ----------1320-------------------------------
  4917. INT 13 - DISK - ??? (Western Digital "Super BIOS")
  4918.     AH = 20h
  4919.     ???
  4920. Return: ???
  4921. Note:    seems to return some kind of status
  4922. ----------1320FF-----------------------------
  4923. INT 13 - QCACHE - DISMOUNT
  4924.     AX = 20FFh
  4925. Return: ???
  4926. ----------1321-------------------------------
  4927. INT 13 - QCACHE - FLUSH CACHE
  4928.     AH = 21h
  4929. Return: ???
  4930. SeeAlso: AH=25h,AH=2Eh
  4931. ----------1322-------------------------------
  4932. INT 13 - QCACHE - ENABLE/DISABLE CACHE
  4933.     AH = 22h
  4934.     AL = 00h disable cache
  4935.          01h enable cache
  4936. ----------1324-------------------------------
  4937. INT 13 - QCACHE - SET SECTORS
  4938.     AH = 24h
  4939.     BX = number of sectors
  4940. Return: ???
  4941. ----------1325-------------------------------
  4942. INT 13 - QCACHE - SET FLUSH INTERVAL
  4943.     AH = 25h
  4944.     BC = interval
  4945. Return: ???
  4946. SeeAlso: AH=21h,AH=2Eh
  4947. ----------1327--BX0000-----------------------
  4948. INT 13 - QCACHE - INSTALLATION CHECK
  4949.     AH = 27h
  4950.     BX = 0000h
  4951. Return: BX nonzero if installed
  4952. ----------132A-------------------------------
  4953. INT 13 - QCACHE - SET BUFFER SIZE
  4954.     AH = 2Ah
  4955.     AL = buffer size
  4956. Return: ???
  4957. ----------132C-------------------------------
  4958. INT 13 - QCACHE - SET BUFFERED WRITES
  4959.     AH = 2Ch
  4960.     AL = state
  4961.         00h disable
  4962.         01h enable
  4963. Return: ???
  4964. SeeAlso: AH=2Dh
  4965. ----------132D-------------------------------
  4966. INT 13 - QCACHE - SET BUFFERED READ
  4967.     AH = 2Dh
  4968.     AL = state
  4969.         00h disable
  4970.         01h enable
  4971. Return: ???
  4972. SeeAlso: AH=2Ch
  4973. ----------132E-------------------------------
  4974. INT 13 - QCACHE - SET FLUSH COUNT
  4975.     AH = 2Eh
  4976.     BX = flush count
  4977. Return: ???
  4978. SeeAlso: AH=21h,AH=25h
  4979. ----------1330-------------------------------
  4980. INT 13 - QCACHE - GET INFO
  4981.     AH = 30h
  4982.     AL = what to get
  4983.         00h system info
  4984.         01h drive info
  4985.     DS:DX -> buffer for info
  4986. Return: ???
  4987. ----------135504-----------------------------
  4988. INT 13 - Seagate - GET CONTROLLER TYPE???
  4989.     AX = 5504h
  4990.     DX = drive (bit 7 set for hard disk)
  4991. Return: CF clear if successful
  4992.         AX = 4321h,4322h if Seagate controller
  4993.     CF set on error
  4994. SeeAlso: AX=5505h,AX=5514h
  4995. ----------135505-----------------------------
  4996. INT 13 - Seagate - PARK HEADS???
  4997.     AX = 5505h
  4998.     DX = drive (bit 7 set for hard disk)
  4999. Return: CF clear if successful
  5000.     CF set on error
  5001. SeeAlso: AX=5504h,AX=5515h
  5002. ----------135514-----------------------------
  5003. INT 13 - Seagate - ???
  5004.     AX = 5514h
  5005.     DX = drive (bit 7 set for hard disk)
  5006. Return: CF clear if successful
  5007.     CF set on error
  5008.     AX = return value (FEBEh,FEBFh,FEDAh,FEDBh)
  5009. SeeAlso: AX=5504h,AX=5515h
  5010. ----------135515-----------------------------
  5011. INT 13 - Seagate - PARK HEADS???
  5012.     AX = 5515h
  5013.     DX = drive (bit 7 set for hard disk)
  5014. Return: CF clear if successful
  5015.     CF set on error
  5016. Note:    appears to be identical to AX=5505h
  5017. SeeAlso: AX=5504h,AX=5505h
  5018. ----------1370-------------------------------
  5019. INT 13 - Priam EDVR.SYS DISK PARTITIONING SOFTWARE???
  5020.     AH = 70h
  5021.     ???
  5022. Return: ???
  5023. Note:    Priam's EDISK.EXE (FDISK replacement) and EFMT.EXE (low-level
  5024.       formatting program) make this call, presumably to EDVR.SYS (the
  5025.       partitioning driver)
  5026. SeeAlso: AH=ADh
  5027. ----------1375-------------------------------
  5028. INT 13 - ???
  5029.     AH = 75h
  5030.     ???
  5031. Return: AH = ???
  5032.     ???
  5033. Note:    intercepted by PC-Cache (v5.1 only)
  5034. ----------1376-------------------------------
  5035. INT 13 - ???
  5036.     AH = 76h
  5037.     ???
  5038. Return: AH = ???
  5039.     ???
  5040. Note:    intercepted by PC-Cache (v5.1 only)
  5041. ----------137B00-----------------------------
  5042. INT 13 - NOW! - GET INFORMATION
  5043.     AX = 7B00h
  5044.     CX:DX -> 1F8h-byte buffer for information record (see below)
  5045. Return: AX = 0000h
  5046.     BX = segment of main resident code
  5047.     ES = ???
  5048. Program: NOW! is a disk cache by Vertisoft Systems, Inc.
  5049. SeeAlso: AX=7B02h,AH=EFh
  5050.  
  5051. Format of information record:
  5052. Offset    Size    Description
  5053.  00h 80 BYTEs    name of directory from which NOW! was started
  5054.  50h 424 BYTEs    ???
  5055.  81h  ? BYTEs    array of bytes for ???
  5056.  F7h 250 BYTEs    array of 25 entries, one per drive???
  5057.     Offset    Size    Description
  5058.      00h  2 BYTEs    ???
  5059.      02h    WORD    ???
  5060.      04h    WORD    ???
  5061.      06h  4 BYTEs    ???
  5062. 1F1h  7 BYTEs    ???
  5063. ----------137B01-----------------------------
  5064. INT 13 - NOW! - ???
  5065.     AX = 7B01h
  5066. Return: DX = segment of ???
  5067. SeeAlso: AX=7B00h
  5068. ----------137B02-----------------------------
  5069. INT 13 - NOW! - SET INFORMATION
  5070.     AX = 7B02h
  5071.     BX = segment of ??? (10h above a PSP)
  5072.     CX:DX -> 1F8h-byte information record (see AX=7B00h)
  5073. Return: ???
  5074. Program: NOW! is a disk cache by Vertisoft Systems, Inc.
  5075. Note:    NOW! grabs the INT 24h value from the PSP reached via the segment in
  5076.       BX
  5077. SeeAlso: AX=7B00h
  5078. ----------137B03-----------------------------
  5079. INT 13 - NOW! - ???
  5080.     AX = 7B03h
  5081.     ???
  5082. Return: ???
  5083. SeeAlso: AX=7B00h,AX=7B04h
  5084. ----------137B04-----------------------------
  5085. INT 13 - NOW! - ???
  5086.     AX = 7B04h
  5087.     ???
  5088. Return: ???
  5089. SeeAlso: AX=7B03h
  5090. ----------137B05-----------------------------
  5091. INT 13 - NOW! - GET ???
  5092.     AX = 7B05h
  5093.     BX:AX = number of physical accesses???
  5094.     DX:CX = total disk accesses???
  5095. SeeAlso: AX=7B00h,AX=7B06h
  5096. ----------137B06-----------------------------
  5097. INT 13 - NOW! - GET ???
  5098.     AX = 7B06h
  5099.     BX = ???
  5100. Return: AX = 0000h
  5101.     BX = ???
  5102. SeeAlso: AX=7B05h,AX=7B07h
  5103. ----------137B07-----------------------------
  5104. INT 13 - NOW! - GET ???
  5105.     AX = 7B07h
  5106. Return: AX = ???
  5107.     BX = ???
  5108.     CX = ???
  5109.     DX = ???
  5110. SeeAlso: AX=7B06h
  5111. ----------137B08-----------------------------
  5112. INT 13 - NOW! - ???
  5113.     AX = 7B08h
  5114.     CX = ??? (default 00h)
  5115. Return: ???
  5116. SeeAlso: AX=7B00h
  5117. ----------1380--CX6572-----------------------
  5118. INT 13 - FAST! - API
  5119.     AH = 80h
  5120.     CX = 6572h
  5121.     DX = 1970h
  5122.     ES:BX -> data structure (see below)
  5123.     AL = function
  5124.         01h ???
  5125.         04h ???
  5126.         05h ???
  5127.         06h installation check
  5128.         Return: AX = 1965h if installed
  5129.         07h ???
  5130.         09h ???
  5131.         0Ah ???
  5132.         0Bh ???
  5133.         0Ch set ??? flag
  5134.         0Dh clear ??? flag
  5135. Return: AH = 00h if successful (except function 06h)
  5136.  
  5137. Format of data structure:
  5138. Offset    Size    Description
  5139.  00h    DWORD    pointer to 19-byte signature string 
  5140.         13h 07h 06h 08h 11h 18h 0Fh 0Eh 02h 18h 13h 08h 0Bh 08h 01h 00h
  5141.           04h 08h 15h  (v4.04)
  5142.  04h    ???    ???
  5143. ----------1381--SI4358-----------------------
  5144. INT 13 - Super PC Kwik/PC-Cache 5.x - ???
  5145.     AH = 81h
  5146.     SI = 4358h
  5147.     ???
  5148. Return: ???
  5149. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  5150.       Super PC Kwik, and thus support this call
  5151.     returns immediately in PC-Cache v5.x
  5152. ----------1382--SI4358-----------------------
  5153. INT 13 - Super PC Kwik/PC-Cache 5.x - ???
  5154.     AH = 82h
  5155.     SI = 4358h
  5156.     ???
  5157. Return: AL = ???
  5158. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  5159.       Super PC Kwik, and thus support this call
  5160. SeeAlso: AH=84h
  5161. ----------1383--SI4358-----------------------
  5162. INT 13 - Super PC Kwik/PC-Cache 5.x - ???
  5163.     AH = 83h
  5164.     SI = 4358h
  5165.     AL = ???
  5166.     ES:BX -> ???
  5167.     ???
  5168. Return: ???
  5169. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  5170.       Super PC Kwik, and thus support this call
  5171. SeeAlso: AH=85h
  5172. ----------1384--SI4358-----------------------
  5173. INT 13 - Super PC Kwik/PC-Cache 5.x - ???
  5174.     AH = 84h
  5175.     SI = 4358h
  5176.     AL = ???
  5177.     ???
  5178. Return: AL = ???
  5179. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  5180.       Super PC Kwik, and thus support this call
  5181. SeeAlso: AH=82h
  5182. ----------1385--SI4358-----------------------
  5183. INT 13 - Super PC Kwik/PC-Cache 5.x - ???
  5184.     AH = 85h
  5185.     SI = 4358h
  5186.     AL = ???
  5187.     DL = ???
  5188.     ???
  5189. Return: ???
  5190. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  5191.       Super PC Kwik, and thus support this call
  5192. SeeAlso: AH=83h
  5193. ----------1386--SI4358-----------------------
  5194. INT 13 - Qualitas Qcache v4.00 - ???
  5195.     AH = 86h
  5196.     SI = 4358h
  5197.     ???
  5198. Return: ???
  5199. ----------1387--SI4358-----------------------
  5200. INT 13 - Qualitas Qcache v4.00 - ???
  5201.     AH = 87h
  5202.     SI = 4358h
  5203.     ???
  5204. Return: ???
  5205. ----------1388--SI4358-----------------------
  5206. INT 13 - Qualitas Qcache v4.00 - ???
  5207.     AH = 88h
  5208.     SI = 4358h
  5209.     ???
  5210. Return: ???
  5211. ----------138EED-----------------------------
  5212. INT 13 - HyperDisk v4.01+ - ???
  5213.     AX = 8EEDh
  5214.     ???
  5215. Return: ???
  5216. Note:    HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  5217. SeeAlso: AX=8EEEh,AX=8EEFh,AH=EEh,INT 2F/AH=DFh
  5218. ----------138EEE-----------------------------
  5219. INT 13 - HyperDisk v4.01+ - ???
  5220.     AX = 8EEEh
  5221. Return: CF set
  5222.     AX = CS of HyperDisk resident code
  5223.     ???
  5224. Note:    identical to AX=8EEFh in HYPERDKX v4.21-4.30
  5225. SeeAlso: AX=8EEDh,AX=8EEFh,AH=EEh
  5226. ----------138EEF-----------------------------
  5227. INT 13 - HyperDisk v4.01+ - ???
  5228.     AX = 8EEFh
  5229. Return: CF set
  5230.     AX = CS of HyperDisk resident code
  5231.     ???
  5232. Note:    identical to AX=8EEEh in HYPERDKX v4.21-4.30
  5233. SeeAlso: AX=8EEDh,AX=8EEEh,AH=EEh
  5234. ----------13A0--SI4358-----------------------
  5235. INT 13 - Super PC Kwik - GET RESIDENT CODE SEGMENT
  5236.     AH = A0h
  5237.     SI = 4358h
  5238. Return: AX = segment of resident code
  5239. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  5240.       Super PC Kwik, and thus support this call
  5241. SeeAlso: INT 16/AX=FFA5h/CX=1111h
  5242. ----------13A1--SI4358-----------------------
  5243. INT 13 - Super PC Kwik - FLUSH CACHE
  5244.     AH = A1h
  5245.     SI = 4358h
  5246. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  5247.       Super PC Kwik, and thus support this call
  5248. SeeAlso: INT 16/AX=FFA5h/CX=FFFFh
  5249. ----------13A2--SI4358-----------------------
  5250. INT 13 - Super PC Kwik - ???
  5251.     AH = A2h
  5252.     SI = 4358h
  5253.     ???
  5254. Return: ???
  5255. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  5256.       Super PC Kwik, and thus support this call
  5257. ----------13A5-------------------------------
  5258. INT 13 C - Super PC Kwik - ???
  5259.     AH = A5h
  5260.     SI = ???
  5261. Return: AX = ???
  5262.     SI = ???
  5263. Notes:    called when a program terminates but stays resident (see INT 21/AH=31h)
  5264.     this call is not supported by Qualitas Qcache 4.00
  5265. ----------13AA--SI4358-----------------------
  5266. INT 13 - Qualitas Qcache v4.00 - ???
  5267.     AH = AAh
  5268.     SI = 4358h
  5269.     ???
  5270. Return: ???
  5271. ----------13AB--SI4358-----------------------
  5272. INT 13 - Qualitas Qcache v4.00 - ???
  5273.     AH = ABh
  5274.     SI = 4358h
  5275.     ???
  5276. Return: ???
  5277. ----------13AC--SI4358-----------------------
  5278. INT 13 - Qualitas Qcache v4.00 - ???
  5279.     AH = ACh
  5280.     SI = 4358h
  5281.     ???
  5282. Return: ???
  5283. ----------13AD-------------------------------
  5284. INT 13 - Priam HARD DISK CONTROLLER???
  5285.     AH = ADh
  5286.     ???
  5287. Return: ???
  5288. Note:    this call is made from Priam's EFMT.EXE (low-level formatter), probably
  5289.       to check the ROM type on the controller for their hard disk kits
  5290. SeeAlso: AH=70h
  5291. ----------13AD--SI4358-----------------------
  5292. INT 13 - Qualitas Qcache v4.00 - ???
  5293.     AH = ADh
  5294.     SI = 4358h
  5295.     ???
  5296. Return: ???
  5297. ----------13B0--SI4358-----------------------
  5298. INT 13 - Super PC Kwik - ???
  5299.     AH = B0h
  5300.     SI = 4358h
  5301.     ???
  5302. Return: ???
  5303. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC Kwik, and thus
  5304.       supports this call; Qualitas Qcache does not support it
  5305. ----------13EE-------------------------------
  5306. INT 13 - SWBIOS - SET 1024 CYLINDER FLAG
  5307.     AH = EEh
  5308.     DL = drive number (80h, 81h)
  5309. Return: CF clear
  5310.        AH = 00h
  5311. Notes:    the following INT 13 call will interpret the cylinder number as 1024
  5312.       less than the desired cylinder
  5313.     flag cleared by all INT 13 calls except AH=EEh
  5314.     SWBIOS is a TSR by Ontrack Computer Systems; Disk Manager also supports
  5315.       these calls
  5316.     also supported by HyperDisk v4.01+ and PC-Cache v5.5+, in order to allow
  5317.       caching of drives using SWBIOS to access more than 1024 cylinders
  5318. SeeAlso: AH=F9h,AH=FEh,INT 16/AX=FFA5h/CX=1111h,INT 2F/AH=DFh
  5319. ----------13EF-------------------------------
  5320. INT 13 - NOW! - ???
  5321.     AH = EFh
  5322.     CX = ???
  5323.     DL = ???
  5324.     ???
  5325. Return: ???
  5326. SeeAlso: AX=7B00h
  5327. ----------13F9-------------------------------
  5328. INT 13 - SWBIOS - INSTALLATION CHECK
  5329.     AH = F9h
  5330.     DL = drive number (80h,81h)
  5331. Return: CF clear 
  5332.         DX = configuration word
  5333.         bit 15 set if other SWBIOS extensions available
  5334.     CF set on error
  5335. Note:    SWBIOS is a TSR by Ontrack Computer Systems; Disk Manager also supports
  5336.       these calls
  5337. SeeAlso: AH=EEh
  5338. ----------13FA--DX5945-----------------------
  5339. INT 13 - PC Tools v8+ VSAFE, VWATCH - API
  5340.     AH = FAh
  5341.     DX = 5945h
  5342.     AL = function (00h-07h)
  5343. Return: varies by function
  5344. Note:    this API is identical to the ones on INT 16/AH=FAh and INT 21/AH=FAh,
  5345.       so it is listed in its entirety under INT 16/AX=FA00h and following
  5346. SeeAlso: INT 16/AX=FA00h
  5347. ----------13FE-------------------------------
  5348. INT 13 - SWBIOS - GET EXTENDED CYLINDER COUNT
  5349.     AH = FEh
  5350.     DL = drive number (80h, 81h)
  5351. Return: CF clear
  5352.     DX = number of cylinders beyond 1024 on drive
  5353. Notes:    standard INT 13/AH=08h will return a cylinder count truncated to 1024
  5354.     BIOS without this extension would return count modulo 1024
  5355.     SWBIOS is a TSR by Ontrack Computer Systems; Disk Manager also supports
  5356.       these calls
  5357. SeeAlso: AH=EEh
  5358. ----------14---------------------------------
  5359. INT 14 - SERIAL I/O- Digiboard DigiCHANNEL PC/X* Extender INT 14 (XAPCM232.SYS)
  5360. Note:    the installation check for this driver is to determine whether the
  5361.       "~DOSXAM~" character device exists
  5362. ----------1400-------------------------------
  5363. INT 14 - SERIAL - INITIALIZE PORT
  5364.     AH = 00h
  5365.     AL = port parameters
  5366.         bits 7-5 data rate (110,150,300,600,1200,2400,4800,9600 bps)
  5367.         bits 4-3 parity (00 or 10 = none, 01 = odd, 11 = even)
  5368.         bit 2    stop bits (set = 2, clear = 1)
  5369.         bits 1-0 data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  5370.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  5371. Return: AH = line status (see AH=03h)
  5372.         FFh if error on Digiboard XAPCM232.SYS
  5373.     AL = modem status (see AH=03h)
  5374. Notes:    default handler is at F000h:E739h in IBM PC and 100% compatible BIOSes
  5375.     since the PCjr supports a maximum of 4800 bps, attempting to set 9600
  5376.       bps will result in 4800 bps
  5377.     various network and serial-port drivers support the standard BIOS
  5378.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  5379. SeeAlso: AH=04h"SERIAL",AH=04h"MultiDOS",AH=05h"SERIAL",AX=8000h"ARTICOM"
  5380. SeeAlso: AH=81h"COMM-DRV",AH=82h"COURIERS",AH=8Ch
  5381. ----------1400-------------------------------
  5382. INT 14 - FOSSIL (Fido/Opus/Seadog Standard Interface Level) - INITIALIZE
  5383.     AH = 00h
  5384.     AL = initializing parameters
  5385.         7 - 6 - 5       4 - 3     2      1 - 0
  5386.         -BAUD RATE-       PARITY   STOP   WORD
  5387.                     BITS  LENGTH
  5388.         000 19200 bd   00 none  0: 1  00: 5
  5389.         001 38400 bd   01 odd   1: 2  01: 6
  5390.         010      300 bd   11 even      10: 7
  5391.         011      600 bd          11: 8
  5392.         100     1200 bd
  5393.         101     2400 bd
  5394.         110     4800 bd
  5395.         111     9600 bd (4800 on PCjr)
  5396.     DX = port number (0-3 or FFh if only performing non-I/O setup)
  5397. Return: AH = RS-232 status code bits
  5398.         0: RDA - input data is available in buffer
  5399.         1: OVRN - data has been lost
  5400.         5: THRE - room is available in output buffer
  5401.         6: TSRE - output buffer empty
  5402.     AL = modem status bits
  5403.         3: always 1
  5404.         7: DCD - carrier detect
  5405. SeeAlso: AH=05h"FOSSIL",AH=81h"COMM-DRV",AH=82h"COURIERS"
  5406. ----------1400-------------------------------
  5407. INT 14 - MBBIOS - INITIALIZE PORT
  5408.     AH = 00h
  5409.     AL = port parameters
  5410.         bits 7-5 data rate
  5411.             (normally 110,150,300,600,1200,2400,4800,9600 bps;
  5412.             9600,14400,19200,28800,38400,57600,115200,330400 bps
  5413.             if the high-speed option is set)
  5414.         bits 4-3 parity (00 or 10 = none, 01 = odd, 11 = even)
  5415.         bit 2    stop bits (set = 2, clear = 1)
  5416.         bits 1-0 data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  5417.     DX = port number
  5418. Return: AH = line status (see AH=03h)
  5419.     AL = modem status (see AH=03h)
  5420. Note:    MBBIOS was written by H. Roy Engehausen
  5421. SeeAlso: AH=04h"MBBIOS",AH=05h"MBBIOS"
  5422. ----------1401-------------------------------
  5423. INT 14 - SERIAL - WRITE CHARACTER TO PORT
  5424.     AH = 01h
  5425.     AL = character to write
  5426.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  5427. Return: AH bit 7 clear if successful
  5428.     AH bit 7 set on error
  5429.     AH bits 6-0 = port status (see AH=03h)
  5430. Note:    various network and serial-port drivers support the standard BIOS
  5431.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  5432. SeeAlso: AH=02h,AH=0Bh"FOSSIL",AX=8000h"ARTICOM",AH=89h
  5433. ----------1402-------------------------------
  5434. INT 14 - SERIAL - READ CHARACTER FROM PORT
  5435.     AH = 02h
  5436.     AL = 00h (ArtiCom)
  5437.     DX = port number (00h-03h (04h-43h for Digiboard XAPCM232.SYS))
  5438. Return: AH = line status (see AH=03h)
  5439.     AL = received character if AH bit 7 clear
  5440. Notes:    will timeout if DSR is not asserted, even if function 03h returns
  5441.       data ready
  5442.     various network and serial-port drivers support the standard BIOS
  5443.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  5444. SeeAlso: AH=01h,AH=02h"FOSSIL",AH=84h,AH=FCh
  5445. ----------1402-------------------------------
  5446. INT 14 - FOSSIL - RECEIVE CHARACTER WITH WAIT
  5447.     AH = 02h
  5448.     DX = port number (0-3)
  5449. Return: AL = character received
  5450.     AH = 00h
  5451. SeeAlso: AH=01h,AH=02h"SERIAL"
  5452. ----------1403-------------------------------
  5453. INT 14 - SERIAL - GET PORT STATUS
  5454.     AH = 03h
  5455.     AL = 00h (ArtiCom)
  5456.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  5457. Return: AH = line status
  5458.         bit 7: timeout
  5459.         6: transmit shift register empty
  5460.         5: transmit holding register empty
  5461.         4: break detected
  5462.         3: framing error
  5463.         2: parity error
  5464.         1: overrun error
  5465.         0: receive data ready
  5466.     AL = modem status
  5467.         bit 7: carrier detect
  5468.         6: ring indicator
  5469.         5: data set ready
  5470.         4: clear to send
  5471.         3: delta carrier detect
  5472.         2: trailing edge of ring indicator
  5473.         1: delta data set ready
  5474.         0: delta clear to send
  5475.     AX = 9E00h if disconnected (ArtiCom)
  5476. SeeAlso: AH=00h,AH=07h"MultiDOS",AX=8000h"ARTICOM",AH=81h"COURIERS",AX=FD02h
  5477. ----------1404-------------------------------
  5478. INT 14 - SERIAL I/O - EXTENDED INITIALIZE (CONVERTIBLE,PS)
  5479.     AH = 04h
  5480.     AL = break status
  5481.         00h if break
  5482.         01h if no break
  5483.     BH = parity
  5484.         00h no parity
  5485.         01h odd parity
  5486.         02h even parity
  5487.         03h stick parity odd
  5488.         04h stick parity even
  5489.     BL = number of stop bits
  5490.         00h one stop bit
  5491.         01h two stop bits (1.5 if 5 bit word length)
  5492.     CH = word length
  5493.         00h 5 bits
  5494.         01h 6 bits
  5495.         02h 7 bits
  5496.         03h 8 bits
  5497.     CL = bps rate
  5498.         00h 110
  5499.         01h 150
  5500.         02h 300
  5501.         03h 600
  5502.         04h 1200
  5503.         05h 2400
  5504.         06h 4800
  5505.         07h 9600
  5506.         08h 19200
  5507.     DX = port number
  5508. Return: AX = port status code (see AH=00h)
  5509. SeeAlso: AH=00h,AH=1Eh,AX=8000h"ARTICOM"
  5510. ----------1404-------------------------------
  5511. INT 14 - FOSSIL - INITIALIZE DRIVER
  5512.     AH = 04h
  5513.     DX = port number
  5514.     optionally BX=4F50h
  5515.            ES:CX -> byte to be set upon ^C
  5516. Return: AX = 1954h (if successful)
  5517.     BL = maximum function number supported (excluding 7Eh and above)
  5518.     BH = revision of FOSSIL supported
  5519.     DTR is raised
  5520. Note:    the word at offset 6 in the interrupt handler contains 1954h, and the
  5521.       following byte contains the maximum function number supported
  5522. SeeAlso: AH=05h"FOSSIL",AH=1Ch
  5523. ----------1404-------------------------------
  5524. INT 14 - MultiDOS Plus IODRV - INITIALIZE PORT
  5525.     AH = 04h
  5526. Return: port initialized; if Hayes-compatible modem, a connection has been
  5527.       established
  5528. Note:    the port number is stored at offset BEh in the Task Control Block
  5529.       (see INT 15/AH=13h"MultiDOS")
  5530. SeeAlso: AH=00h,AH=05h"MultiDOS",AH=20h"MultiDOS",INT 15/AH=13h"MultiDOS"
  5531. ----------1404-------------------------------
  5532. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE BAUD RATE
  5533.     AH = 04h
  5534.     AL = initializing parameters
  5535.         bits 7-5 unused
  5536.         bits 4,3: parity (00 none, 01 odd, 11 even)
  5537.         bit 2: stop bits (0 = one, 1 = two)
  5538.         bits 1,0: data bits (00 = five, 01 = six, 10 = seven, 11 = eight)
  5539.     BX = baud rate
  5540.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5541. Return: AH = status
  5542.         00h successful
  5543.         FFh error
  5544. SeeAlso: AH=05h"Digiboard"
  5545. ----------1404-------------------------------
  5546. INT 14 - MBBIOS - INQUIRY
  5547.     AH = 04h
  5548. Return: AH = AAh
  5549.     AL = 55h
  5550. SeeAlso: AH=00h"MBBIOS",AH=09h"MBBIOS"
  5551. ----------1405-------------------------------
  5552. INT 14 - SERIAL I/O - EXTENDED COMMUNICATION PORT CONTROL (CONVERTIBLE,PS)
  5553.     AH = 05h
  5554.     AL = 00h read modem control register
  5555.           Return: BL = modem control register (see below)
  5556.               AH = status
  5557.     AL = 01h write modem control register
  5558.           BL = modem control register
  5559.           bit 0: data terminal ready
  5560.           bit 1: request to send
  5561.           bit 2: OUT1
  5562.           bit 3: OUT2
  5563.           bit 4: LOOP
  5564.           bits 5-7 reserved
  5565.           Return: AX = status
  5566.     DX = port number
  5567. Note:    also supported by ArtiCom
  5568. SeeAlso: AH=00h,AH=1Fh,AX=8000h"ARTICOM"
  5569. ----------1405-------------------------------
  5570. INT 14 - FOSSIL - DEINITIALIZE DRIVER
  5571.     AH = 05h
  5572.     DX = port number
  5573. Return: none
  5574.     DTR is not affected
  5575. SeeAlso: AH=00h,AH=04h"FOSSIL",AH=1Dh,AH=8Dh
  5576. ----------1405-------------------------------
  5577. INT 14 - MultiDOS Plus IODRV - READ CHARACTER FROM PORT
  5578.     AH = 05h
  5579.     AL = timeout in seconds (00h = never)
  5580. Return: AL = status
  5581.         00h successful
  5582.         AH = character read
  5583.         01h read error
  5584.         02h timed out
  5585.         other modem status (CTS, DSR) changed
  5586. Note:    the port number is stored at offset BEh in the Task Control Block
  5587. SeeAlso: AH=02h,AH=04h"MultiDOS",AH=06h"MultiDOS",AH=22h"MultiDOS"
  5588. SeeAlso: INT 15/AH=13h"MultiDOS"
  5589. ----------1405-------------------------------
  5590. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE PROTOCOL
  5591.     AH = 05h
  5592.     AL = protocol
  5593.         bits 7-4 unused
  5594.         bit 3: RTS/CTS
  5595.         bit 2: DSR
  5596.         bits 1,0: XON/XOFF
  5597.     BH = new XOFF character (00h = current)
  5598.     BL = new XON character (00h = current)
  5599.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5600. Return: AH = status
  5601.         00h successful
  5602.         FFh error
  5603. SeeAlso: AH=04h"Digiboard"
  5604. ----------1405-------------------------------
  5605. INT 14 - MBBIOS - DROP DTR AND RTS
  5606.     AH = 05h
  5607.     DX = port number
  5608. Return: none
  5609. SeeAlso: AH=00h"MBBIOS",AH=06h"MBBIOS",AH=06h"FOSSIL"
  5610. ----------1406-------------------------------
  5611. INT 14 - FOSSIL - RAISE/LOWER DTR
  5612.     AH = 06h
  5613.     DX = port
  5614.     AL = DTR state to be set
  5615.         00h = lower
  5616.         01h = raise
  5617. SeeAlso: AH=05h"MBBIOS",AH=1Ah
  5618. ----------1406-------------------------------
  5619. INT 14 - MultiDOS Plus IODRV - WRITE CHARACTER TO PORT
  5620.     AH = 06h
  5621.     AL = character
  5622. Return: AL = status
  5623.         00h successful
  5624. Notes:    the port number is stored at offset BEh in the Task Control Block
  5625.     if output queue is full, the calling task is blocked until the
  5626.       character can be stored
  5627. SeeAlso: AH=01h,AH=04h"MultiDOS",AH=05h"MultiDOS",AH=21h"MultiDOS"
  5628. SeeAlso: INT 15/AH=13h"MultiDOS"
  5629. ----------1406-------------------------------
  5630. INT 14 - MBBIOS - RAISE DTR AND RTS
  5631.     AH = 06h
  5632.     DX = port number
  5633. Return: none
  5634. SeeAlso: AH=05h"MBBIOS",AH=07h"MBBIOS"
  5635. ----------1407-------------------------------
  5636. INT 14 - FOSSIL - RETURN TIMER TICK PARAMETERS
  5637.     AH = 07h
  5638. Return: AL = timer tick interrupt number
  5639.     AH = ticks per second on interrupt number in AL
  5640.     DX = approximate number of milliseconds per tick
  5641. SeeAlso: AH=16h
  5642. ----------1407-------------------------------
  5643. INT 14 - MultiDOS Plus IODRV - GET PORT STATUS
  5644.     AH = 07h
  5645. Return: CL = modem status (see AH=03h)
  5646.     CH = character at head of input queue (if any)
  5647.     DX = number of characters in input queue
  5648. Note:    the port number is stored at offset BEh in the Task Control Block
  5649. SeeAlso: AH=03h,AH=05h"MultiDOS",AH=08h"MultiDOS",AH=09h"MultiDOS"
  5650. SeeAlso: AH=23h"MultiDOS",INT 15/AH=13h"MultiDOS"
  5651. ----------1407-------------------------------
  5652. INT 14 - MBBIOS - SEND BREAK
  5653.     AH = 07h
  5654.     DX = port number
  5655. Return: none
  5656. SeeAlso: AH=06h"MBBIOS"
  5657. ----------1408-------------------------------
  5658. INT 14 - FOSSIL - FLUSH OUTPUT BUFFER WAITING TILL ALL OUTPUT IS DONE
  5659.     AH = 08h
  5660.     DX = port number
  5661. SeeAlso: AH=09h"FOSSIL"
  5662. ----------1408-------------------------------
  5663. INT 14 - MultiDOS Plus 4.0 IODRV - GET AND RESET PORT LINE STATUS
  5664.     AH = 08h
  5665. Return: AL = line status (see AH=03h)
  5666.     AH destroyed
  5667. Notes:    the port number is stored at offset BEh in the Task Control Block
  5668.     on every line status change, the line status is ORed with the line
  5669.       status accumulator; this function returns the accumulator and clears
  5670.       it
  5671. SeeAlso: AH=03h,AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  5672. ----------1408-------------------------------
  5673. INT 14 - Digiboard DigiCHANNEL PC/X* - ALTERNATE STATUS CHECK
  5674.     AH = 08h
  5675.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5676. Return: AH = RS232 status bits (see AH=03h)
  5677.     ZF set if no characters queued
  5678.     ZF clear if character available
  5679.         AL = next character
  5680. SeeAlso: AH=03h,AH=09h"Digiboard"
  5681. ----------1408-------------------------------
  5682. INT 14 - MBBIOS - NON-DESTRUCTIVE READ
  5683.     AH = 08h
  5684.     DX = port number
  5685. Return: AL = character
  5686.     AH = status (see AH=02h)
  5687. SeeAlso: AH=0Bh"MBBIOS",AH=0Ch"FOSSIL"
  5688. ----------1409-------------------------------
  5689. INT 14 - FOSSIL - PURGE OUTPUT BUFFER THROWING AWAY ALL PENDING OUTPUT
  5690.     AH = 09h
  5691.     DX = port number
  5692. SeeAlso: AH=08h"FOSSIL",AH=0Ah"FOSSIL",AH=88h
  5693. ----------1409-------------------------------
  5694. INT 14 - MultiDOS Plus IODRV - RESET PORT STATUS
  5695.     AH = 09h
  5696. Return: modem status byte cleared
  5697. Note:    the port number is stored at offset BEh in the Task Control Block
  5698. SeeAlso: AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  5699. ----------1409-------------------------------
  5700. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR BUFFERS
  5701.     AH = 09h
  5702.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5703. Return: AH = status
  5704.         00h successful
  5705.         FFh error
  5706. SeeAlso: AH=08h"Digiboard",AH=0Ah"Digiboard",AH=10h"Digiboard"
  5707. ----------1409-------------------------------
  5708. INT 14 - MBBIOS - GET/SET OPTIONS
  5709.     AH = 09h
  5710.     AL = option byte
  5711.         00000001b - Transmit Buffering Enabled
  5712.         00000101b - Hardware Handshaking Enabled
  5713.         00100000b - High Speed Option Enabled
  5714.     DX = port number???
  5715. Return: AL = old option byte
  5716. SeeAlso: AH=04h"MBBIOS",AH=10h"FOSSIL"
  5717. ----------140A-------------------------------
  5718. INT 14 - FOSSIL - PURGE INPUT BUFFER THROWING AWAY ALL PENDING INPUT
  5719.     AH = 0Ah
  5720.     DX = port number
  5721. SeeAlso: AH=09h"FOSSIL",AH=85h
  5722. ----------140A-------------------------------
  5723. INT 14 - Digiboard DigiCHANNEL PC/X* - INPUT QUEUE CHECK
  5724.     AH = 0Ah
  5725.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5726. Return: AX = number of characters available in buffer
  5727. SeeAlso: AH=09h"Digiboard",AH=0Dh"Digiboard"
  5728. ----------140A-------------------------------
  5729. INT 14 - MBBIOS - WRITE BUFFER
  5730.     AH = 0Ah
  5731.     CX = count
  5732.     ES:DI -> buffer
  5733. Return: AX = status (see AH=03h)
  5734.     DI = is updated
  5735.     CX = unsent character count
  5736. SeeAlso: AH=0Bh"MBBIOS",AH=19h"FOSSIL"
  5737. ----------140B-------------------------------
  5738. INT 14 - FOSSIL - TRANSMIT NO WAIT
  5739.     AH = 0Bh
  5740.     AL = character
  5741.     DX = port number
  5742. Return: AX = 0000h character not accepted
  5743.        = 0001h character accepted
  5744. SeeAlso: AH=01h
  5745. ----------140B-------------------------------
  5746. INT 14 - MBBIOS - READ BUFFER
  5747.     AH = 0Bh
  5748.     CX = size of buffer
  5749.     ES:DI -> buffer
  5750. Return: AH = LSR
  5751.     AL = MSR
  5752.     CX = count of characters
  5753.     DI = is updated
  5754. SeeAlso: AH=08h"MBBIOS",AH=0Ah"MBBIOS",AH=18h"FOSSIL"
  5755. ----------140C-------------------------------
  5756. INT 14 - FOSSIL - NON-DESTRUCTIVE READ AHEAD
  5757.     AH = 0Ch
  5758.     DX = port number
  5759. Return: AX = FFFFh character not available
  5760.     AX = 00xxh character xx available
  5761. SeeAlso: AH=08h"MBBIOS",AH=20h"FOSSIL"
  5762. ----------140D-------------------------------
  5763. INT 14 - FOSSIL - KEYBOARD READ WITHOUT WAIT
  5764.     AH = 0Dh
  5765. Return: AX = FFFFh character not available
  5766.        = xxyyh standard IBM-style scan code
  5767. SeeAlso: AH=0Eh
  5768. ----------140D-------------------------------
  5769. INT 14 - Digiboard DigiCHANNEL PC/X* - GET POINTER TO CH_KEY_RDY FLAG
  5770.     AH = 0Dh
  5771.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5772. Return: ES:BX -> CH_KEY_RDY flag
  5773. SeeAlso: AH=0Ah"Digiboard"
  5774.  
  5775. Values for CH_KEY_RDY flag:
  5776.  00h    receive buffer empty
  5777.  FFh    characters available
  5778. ----------140E-------------------------------
  5779. INT 14 - FOSSIL - KEYBOARD READ WITH WAIT
  5780.     AH = 0Eh
  5781. Return: AX = xxyyh standard IBM-style scan code
  5782. SeeAlso: AH=0Dh"FOSSIL"
  5783. ----------140E-------------------------------
  5784. INT 14 - Digiboard DigiCHANNEL PC/X* - WRITE STRING
  5785.     AH = 0EH
  5786.     CX = number of characters to write
  5787.     ES:BX -> string
  5788.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5789. Return: AX = number of characters actually written
  5790.     ZF clear if successful
  5791.     ZF set on error
  5792. SeeAlso: AH=0Fh"Digiboard"
  5793. ----------140F-------------------------------
  5794. INT 14 - FOSSIL - ENABLE/DISABLE FLOW CONTROL
  5795.     AH = 0Fh
  5796.     AL = bit mask describing flow control requested
  5797.         0: xon/xoff on transmit (watch for xoff while sending)
  5798.         1: CTS/RTS (CTS on transmit/RTS on receive)
  5799.         2: reserved
  5800.         3: xon/xoff on receive (send xoff when buffer near full)
  5801.         4-7: all 1
  5802.     DX = port number
  5803. SeeAlso: AH=09h"MBBIOS",AH=10h"FOSSIL"
  5804. ----------140F-------------------------------
  5805. INT 14 - Digiboard DigiCHANNEL PC/X* - READ STRING
  5806.     AH = 0Fh
  5807.     CX = number of characters to read
  5808.     ES:BX -> buffer
  5809.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5810. Return: AX = number of characters read
  5811.     ZF clear if successful
  5812.     ZF set on error (line status or wrong number of characters)
  5813. SeeAlso: AH=0Eh"Digiboard"
  5814. ----------1410-------------------------------
  5815. INT 14 - FOSSIL - EXTENDED ^C/^K CHECKING AND TRANSMIT ON/OFF
  5816.     AH = 10h
  5817.     AL = bit mask
  5818.         0: enable/disable ^C/^K checking
  5819.         1: enable/disable the transmitter
  5820.     DX = port number
  5821. SeeAlso: AH=0Fh"FOSSIL"
  5822. ----------1410-------------------------------
  5823. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR RECEIVE BUFFER
  5824.     AH = 10h
  5825.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5826. Return: AH = status
  5827.         00h successful
  5828.         FFh error
  5829. SeeAlso: AH=09h"Digiboard",AH=11h"Digiboard"
  5830. ----------1411-------------------------------
  5831. INT 14 - FOSSIL - SET CURRENT CURSOR LOCATION
  5832.     AH = 11h
  5833.     DH = row
  5834.     DL = column
  5835. Note:    this is the same as INT 10/AH=02h
  5836. SeeAlso: AH=12h"FOSSIL"
  5837. ----------1411-------------------------------
  5838. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR TRANSMIT BUFFER
  5839.     AH = 11h
  5840.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5841. Return: AH = status
  5842.         00h successful
  5843.         FFh error
  5844. SeeAlso: AH=09h"Digiboard",AH=10h"Digiboard"
  5845. ----------1412-------------------------------
  5846. INT 14 - FOSSIL - READ CURRENT CURSOR LOCATION
  5847.     AH = 12h
  5848. Return: DH = row
  5849.     DL = column
  5850. Note:    this is the same as INT 10/AH=03h
  5851. SeeAlso: AH=11h"FOSSIL"
  5852. ----------1412-------------------------------
  5853. INT 14 - Digiboard DigiCHANNEL PC/X* - GET TRANSMIT BUFFER FREE SPACE
  5854.     AH = 12h
  5855.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5856. Return: AX = number of bytes free
  5857. SeeAlso: AH=0Ah"Digiboard"
  5858. ----------1413-------------------------------
  5859. INT 14 - FOSSIL - SINGLE CHARACTER ANSI WRITE TO SCREEN
  5860.     AH = 13h
  5861.     AL = character
  5862. Note:    should not be called if it is unsafe to call DOS
  5863. SeeAlso: AH=15h
  5864. ----------1414-------------------------------
  5865. INT 14 - FOSSIL - ENABLE OR DISABLE WATCHDOG PROCESSING
  5866.     AH = 14h
  5867.     AL = 01h enable watchdog
  5868.          00h disable watchdog
  5869.     DX = port number
  5870. ----------1415-------------------------------
  5871. INT 14 - FOSSIL - WRITE CHARACTER TO SCREEN USING BIOS SUPPORT ROUTINES
  5872.     AH = 15h
  5873.     AL = character
  5874. SeeAlso: AH=13h
  5875. ----------1416-------------------------------
  5876. INT 14 - FOSSIL - INSERT/DELETE FUNCTION FROM TIMER TICK CHAIN
  5877.     AH = 16h
  5878.     AL = function
  5879.         00h = delete
  5880.         01h = add
  5881.     ES:DX -> routine to call
  5882. Return: AX = status
  5883.         0000h successful
  5884.         0001h unsuccessful
  5885. SeeAlso: AH=07h"FOSSIL"
  5886. ----------1416-------------------------------
  5887. INT 14 - Digiboard DigiCHANNEL PC/X* - CCB COMMAND
  5888.     AH = 16h
  5889.     AL = CCB command number (see below)
  5890.     BL = byte 2
  5891.     BH = byte 3
  5892.     CL = byte 1 (for all channel functions except 4Eh and 4Fh)
  5893.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5894. Return: AH = status
  5895.         00h successful
  5896.         FFh error
  5897. SeeAlso: AH=18h"Digiboard"
  5898.  
  5899. Values for CCB command number:
  5900.  40h Set Receive Mid Water Mark
  5901.  41h Set Receive High Water Mark
  5902.  42h Flush Receive Buffer
  5903.  43h Flush Transmit Buffer
  5904.  44h Transmit Pause
  5905.  45h Transmit Resume
  5906.  46h Set Interrupt to Host Mask
  5907.  47h Set Baud, Data, Stop and Parity
  5908.  48h Send Break
  5909.  49h Set Modem Lines
  5910.  4Ah Set Break Count
  5911.  4Bh Set Handshake
  5912.  4Ch Set Xon/Xoff Characters
  5913.  4Dh Set Transmit Mid Water Mark
  5914.  4Eh IRQ Polling Timer to Host
  5915.  4Fh Buffer Set All
  5916.  50h Port On
  5917.  51h Port Off
  5918.  52h Receive Pause
  5919.  53h Special Character Interrupt
  5920.  54h RS-422 Enable
  5921. ----------1417-------------------------------
  5922. INT 14 - FOSSIL - REBOOT SYSTEM
  5923.     AH = 17h
  5924.     AL = method
  5925.         00h = cold boot
  5926.         01h = warm boot
  5927. SeeAlso: INT 19
  5928. ----------1418-------------------------------
  5929. INT 14 - FOSSIL - READ BLOCK
  5930.     AH = 18h
  5931.     CX = maximum number of characters to transfer
  5932.     DX = port number
  5933.     ES:DI -> user buffer
  5934. Return: AX = number of characters transferred
  5935. SeeAlso: AH=19h"FOSSIL",AH=83h"COURIERS",AX=FF02h,INT 6B/AX=0100h
  5936. ----------1418-------------------------------
  5937. INT 14 - Digiboard DigiCHANNEL PC/X* - SEND BIOS COMMAND
  5938.     AH = 18h
  5939.     ES:BX -> 16-byte command string
  5940.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5941. Return: AH = status
  5942.         00h successful
  5943.         80h timeout
  5944.     AL = mailbox status
  5945.         00h no errors
  5946.         8Xh BIOS error
  5947.     ES:BX buffer filled in with mailbox string
  5948.     ZF clear if no errors
  5949.     ZF set if either status byte contains an error code
  5950. SeeAlso: AH=16h"Digiboard"
  5951. ----------1419-------------------------------
  5952. INT 14 - FOSSIL - WRITE BLOCK
  5953.     AH = 19h
  5954.     CX = maximum number of characters to transfer
  5955.     DX = port number
  5956.     ES:DI -> user buffer
  5957. Return: AX = number of characters transferred
  5958. SeeAlso: AH=18h"FOSSIL",AH=86h,INT 6B/AX=0000h
  5959. ----------1419-------------------------------
  5960. INT 14 - Digiboard DigiCHANNEL PC/X* - SPECIAL CHARACTER INTERRUPT
  5961.     AH = 19h
  5962.     BL = flag
  5963.         00h disable special character interrupt
  5964.         FFh enable interrupt
  5965.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5966. Return: AH = status
  5967.         00h successful    
  5968.         FFh failed
  5969. SeeAlso: AH=1Ah"Digiboard"
  5970. ----------141A-------------------------------
  5971. INT 14 - FOSSIL - BREAK BEGIN OR END
  5972.     AH = 1Ah
  5973.     AL = 00h stop sending 'break'
  5974.          01h start sending 'break'
  5975.     DX = port number
  5976. SeeAlso: AH=06h"FOSSIL",AH=8Ah,AH=FAh
  5977. ----------141A-------------------------------
  5978. INT 14 - Digiboard DigiCHANNEL PC/X - SPECIAL CHARACTER FLAG/COUNTER
  5979.     AH = 1Ah
  5980.     BX = subfunction
  5981.         00h return pointer to special character flag byte
  5982.         01h return pointer to special character counter word
  5983.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  5984. Return: ES:BX -> special character flag or counter
  5985. Notes:    flag is FFh if one or more special characters are in the receive
  5986.       buffer; it is 00h and the counter is invalid if no special characters
  5987.       are in the receive buffer
  5988.     counter (if valid) contains the number of characters in the receive
  5989.       buffer up to and including the last-received special character
  5990. ----------141B-------------------------------
  5991. INT 14 - FOSSIL - RETURN INFORMATION ABOUT THE DRIVER
  5992.     AH = 1Bh
  5993.     DX = port number
  5994.     CX = size of user buffer
  5995.     ES:DI -> user buffer for driver info (see below)
  5996. Return: AX = number of characters transferred
  5997.     CX = 3058h ("0X") (X00 FOSSIL only)
  5998.     DX = 2030h (" 0") (X00 FOSSIL only)
  5999.  
  6000. Format of driver info:
  6001. Offset    Size    Description
  6002.  00h    WORD    size of structure in bytes
  6003.  02h    BYTE    FOSSIL spec driver conforms to
  6004.  03h    BYTE    revision level of this specific driver
  6005.  04h    DWORD    pointer to ASCIZ identification string
  6006.  08h    WORD    size of the input buffer
  6007.  0Ah    WORD    number of bytes left in buffer
  6008.  0Ch    WORD    size of the output buffer
  6009.  0Eh    WORD    number of bytes left in buffer
  6010.  10h    BYTE    width of screen
  6011.  11h    BYTE    length of screen
  6012.  12h    BYTE    actual baud rate, computer to modem
  6013. ----------141C-------------------------------
  6014. INT 14 - X00 FOSSIL - ACTIVATE PORT
  6015.     AH = 1Ch
  6016.     DX = port number
  6017. Return: AX = 1954h if successful
  6018.     BL = maximum function number supported (not including 7Eh and above)
  6019.     BH = revision of FOSSIL specification supported
  6020. Note:    this is a duplicate of AH=04h, so that AH=04h may be made compatible
  6021.       with the PS/2 BIOS in a future release
  6022. SeeAlso: AH=04h"FOSSIL",AH=1Dh
  6023. ----------141D-------------------------------
  6024. INT 14 - X00 FOSSIL - DEACTIVATE PORT
  6025.     AH = 1Dh
  6026.     DX = port number
  6027. Return: none
  6028. Notes:    this is a duplicate of AH=05h, so that AH=05h may be made compatible
  6029.       with the PS/2 BIOS in a future release
  6030.     ignored if the port was never activated with AH=04h or AH=1Ch
  6031. SeeAlso: AH=05h"FOSSIL",AH=1Ch
  6032. ----------141E-------------------------------
  6033. INT 14 - X00 FOSSIL - EXTENDED LINE CONTROL INITIALIZATION
  6034.     AH = 1Eh
  6035.     AL = break status
  6036.         00h if break
  6037.         01h if no break
  6038.     BH = parity
  6039.         00h no parity
  6040.         01h odd parity
  6041.         02h even parity
  6042.         03h stick parity odd
  6043.         04h stick parity even
  6044.     BL = number of stop bits
  6045.         00h one stop bit
  6046.         01h two stop bits (1.5 if 5 bit word length)
  6047.     CH = word length
  6048.         00h 5 bits
  6049.         01h 6 bits
  6050.         02h 7 bits
  6051.         03h 8 bits
  6052.     CL = bps rate
  6053.         00h 110
  6054.         01h 150
  6055.         02h 300
  6056.         03h 600
  6057.         04h 1200
  6058.         05h 2400
  6059.         06h 4800
  6060.         07h 9600
  6061.         08h 19200
  6062.     DX = port number
  6063. Return: AX = port status code (see AH=00h)
  6064. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=04h call
  6065.     if the port was locked at X00 load time, the appropriate parameters are
  6066.       ignored
  6067. SeeAlso: AH=00h,AH=04h"SERIAL I/O"
  6068. ----------141F-------------------------------
  6069. INT 14 - X00 FOSSIL - EXTENDED SERIAL PORT STATUS/CONTROL
  6070.     AH = 1Fh
  6071.     AL = 00h read modem control register
  6072.           Return: BL = modem control register (see below)
  6073.               AH = status
  6074.     AL = 01h write modem control register
  6075.           BL = modem control register
  6076.           bit 0: data terminal ready
  6077.           bit 1: request to send
  6078.           bit 2: OUT1
  6079.           bit 3: OUT2 (interrupts) enabled
  6080.           bit 4: LOOP
  6081.           bits 5-7 reserved
  6082.           Return: AX = status
  6083.     DX = port number
  6084. SeeAlso: AH=00h,AH=05h"SERIAL I/O"
  6085. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=05h call
  6086.     X00 forces BL bit 3 set (interrupts cannot be disabled)
  6087. ----------1420-------------------------------
  6088. INT 14 - X00 FOSSIL - DESTRUCTIVE READ WITH NO WAIT
  6089.     AH = 20h
  6090.     DX = port number
  6091. Return: AH = 00h if character was available
  6092.         AL = next character (removed from receive buffer)
  6093.     AX = FFFFh if no character available
  6094. SeeAlso: AH=0Ch,AH=21h"X00"
  6095. ----------1420-------------------------------
  6096. INT 14 - Alloy MW386 - ATTACH LOGICAL COMMUNICATIONS PORT TO PHYSICAL PORT
  6097.     AH = 20h
  6098.     AL = logical port (01h COM1, 02h COM2)
  6099.     DX = physical port number
  6100. Return: AX = status
  6101.         0000h successful
  6102.         FFFFh failed
  6103. SeeAlso: AH=21h"Alloy",AH=22h"Alloy",AH=23h"Alloy",INT 17/AH=8Bh"Alloy"
  6104. ----------1420-------------------------------
  6105. INT 14 - MultiDOS Plus - INITIALIZE PORT
  6106.     AH = 20h
  6107.     AL = port parameters (see AH=00h"SERIAL")
  6108.     DX = port number (0-3)
  6109. Return: AH = status
  6110.         00h successful
  6111.         41h no such port
  6112.         64h monitor mode already active
  6113. SeeAlso: AH=00h"SERIAL",AH=04h"MultiDOS",AH=21h"MultiDOS",AH=23h"MultiDOS"
  6114. ----------1421-------------------------------
  6115. INT 14 - X00 FOSSIL - STUFF RECEIVE BUFFER
  6116.     AH = 21h
  6117.     AL = character
  6118.     DX = port number
  6119. Notes:    the given character is inserted at the end of the receive buffer as if
  6120.       it had just arrived from the serial port; all normal receive
  6121.       processing (XON/XOFF, ^C/^K) is performed on the character
  6122.     fully re-entrant
  6123. SeeAlso: AH=20h"X00"
  6124. ----------1421-------------------------------
  6125. INT 14 - Alloy MW386 v1.x only - RELEASE PHYSICAL COMMUNICATIONS PORT
  6126.     AH = 21h
  6127.     DX = physical port number
  6128. Return: AX = status
  6129.         0000h successful
  6130.         FFFFh failed
  6131. SeeAlso: AH=20h"Alloy",AH=22h"Alloy"
  6132. ----------1421-------------------------------
  6133. INT 14 - MultiDOS Plus - TRANSMIT CHARACTER
  6134.     AH = 21h
  6135.     AL = character to send
  6136.     DX = port number
  6137. Return: AH = status
  6138.         00h successful
  6139.         39h no DSR or CTS
  6140.         3Ch no DSR
  6141.         3Bh no CTS
  6142.         41h no such port
  6143.         42h monitor mode not active
  6144.         97h timed out
  6145. Note:    monitor mode must have been turned on with AH=24h before calling
  6146. SeeAlso: AH=20h"MultiDOS",AH=22h"MultiDOS",AH=24h"MultiDOS"
  6147. ----------1422-------------------------------
  6148. INT 14 - Alloy MW386 v2+ - RELEASE LOGICAL COMMUNICATIONS PORT
  6149.     AH = 22h
  6150.     AL = logical port (01h COM1, 02h COM2)
  6151. Return: AX = status (0000h successful)
  6152. SeeAlso: AH=20h"Alloy",AH=21h"Alloy"
  6153. ----------1422-------------------------------
  6154. INT 14 - MultiDOS Plus - RECEIVE CHARACTER
  6155.     AH = 22h
  6156.     DX = port number
  6157. Return: AH = status (see also AH=21h"MultiDOS")
  6158.         00h successful
  6159.         AL = character
  6160.         3Dh framing and parity error
  6161.         3Eh overrun error
  6162.         3Fh framing error
  6163.         40h parity error
  6164.         96h ring buffer overflow
  6165. Note:    if no character is available, this function waits until a character
  6166.       arrives or an implementation-dependent timeout elapses
  6167. SeeAlso: AH=20h"MultiDOS",AH=21h"MultiDOS",AH=27h
  6168. ----------1423-------------------------------
  6169. INT 14 - Alloy MW386 v2+ - GET PORT NUMBER FROM LOGICAL PORT ID
  6170.     AH = 23h
  6171.     AL = logical port (01h COM1, 02h COM2)
  6172.     DH = user ID
  6173.     DL = process ID (DH,DL both FFh for current task)
  6174. Return: AL = MW386 port mode
  6175.         bit 0: port is shared (spooler only)
  6176.         1: port is spooled instead of direct (spooler only)
  6177.         2: port is assigned as logical COM device, not in spooler
  6178.         3: port is free
  6179.     CX = MW386 port number
  6180.     DH = owner's user ID
  6181.     DL = owner's task ID
  6182. SeeAlso: AH=20h"Alloy",INT 17/AH=8Bh"Alloy"
  6183. ----------1423-------------------------------
  6184. INT 14 - MultiDOS Plus - GET PORT STATUS
  6185.     AH = 23h
  6186.     DX = port number
  6187. Return: AH = line status (see AH=03h)
  6188.     AL = modem status (see AH=03h)
  6189. SeeAlso: AH=03h,AH=07h"MultiDOS",AH=20h"MultiDOS"
  6190. ----------1424-------------------------------
  6191. INT 14 - Alloy MW386 v2+ - CHANGE PHYSICAL PORT PARAMETERS
  6192.     AH = 24h
  6193.     CX = physical I/O port number
  6194.     DS:DX -> configuration table (see below)
  6195. Return: AH = 00h
  6196. Note:    invalid port numbers are merely ignored
  6197. SeeAlso: INT 17/AH=96h
  6198.  
  6199. Format of configuration table:
  6200. Offset    Size    Description
  6201.  00h    BYTE    baud rate
  6202.         00h 38400
  6203.         01h 19200
  6204.         02h  9600
  6205.         03h  7200
  6206.         04h  4800
  6207.         05h  3600
  6208.         06h  2400
  6209.         07h  2000
  6210.         08h  1200
  6211.         09h   600
  6212.         0Ah   300
  6213.         0Bh   150
  6214.         0Ch   134.5
  6215.  01h    BYTE    data bits (00h=5, 01h=6, 02h=7, 03h=8)
  6216.  02h    BYTE    parity (00h none, 01h odd, 02h even)
  6217.  03h    BYTE    stop bits (00h=1, 01h=2)
  6218.  04h    BYTE    receive flow control
  6219.         00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC, 04h RTS/CTS
  6220.  05h    BYTE    transmit flow control (as for receive)
  6221. ----------1424-------------------------------
  6222. INT 14 - MultiDOS Plus - SET MONITOR MODE
  6223.     AH = 24h
  6224.     AL = port status storage
  6225.         00h single status for entire receive buffer
  6226.         01h separate status kept for each byte in receive buffer
  6227.     DX = port number
  6228. Return: AH = status
  6229.         00h successful
  6230.         3Ah invalid status storage specified
  6231.         41h no such port
  6232.         64h monitor mode already active
  6233. Note:    in monitor mode, MultiDOS redirects all BIOS video output to a serial
  6234.       port
  6235. SeeAlso: AH=20h"MultiDOS",AH=25h
  6236. ----------1425-------------------------------
  6237. INT 14 - MultiDOS Plus - CLEAR BUFFERS
  6238.     AH = 25h
  6239.     AL = function
  6240.         00h only clear buffers
  6241.         01h clear buffers and deactivate
  6242.     DX = port number
  6243. Return: AH = status
  6244.         00h successful
  6245.         3Ah invalid function
  6246.         41h no such port
  6247.         42h monitor mode not active
  6248. SeeAlso: AH=20h"MultiDOS",AH=24h"MultiDOS"
  6249. ----------1427-------------------------------
  6250. INT 14 - MultiDOS Plus - GET BUFFER CHARACTER COUNT
  6251.     AH = 27h
  6252.     DX = port number
  6253. Return: AH = status
  6254.         00h successful
  6255.         41h no such port
  6256.         42h monitor mode not active
  6257.     AL = number of characters in receive buffer
  6258. ----------147E-------------------------------
  6259. INT 14 - FOSSIL - INSTALL AN EXTERNAL APPLICATION FUNCTION
  6260.     AH = 7Eh
  6261.     AL = code assigned to external application (80h-BFh)
  6262.         80h reserved for communications FOSSIL
  6263.         81h video FOSSIL
  6264.         82h reserved for keyboard FOSSIL
  6265.         83h reserved for system FOSSIL
  6266.     ES:DX -> entry point
  6267. Return: AX = 1954h
  6268.     BL = code assigned to application (same as input AL)
  6269.     DH = 00h failed
  6270.          01h successful
  6271. SeeAlso: AH=7Fh,AH=80h"FOSSIL",AX=8100h,AH=82h"FOSSIL",AH=83h"FOSSIL"
  6272. ----------147F-------------------------------
  6273. INT 14 - FOSSIL - REMOVE AN EXTERNAL APPLICATION FUNCTION
  6274.     AH = 7Fh
  6275.     AL = code assigned to external application
  6276.     ES:DX -> entry point
  6277. Return: AX = 1954h
  6278.     BL = code assigned to application (same as input AL)
  6279.     DH = 00h failed
  6280.          01h successful
  6281. SeeAlso: AH=7Eh
  6282. ----------1480-------------------------------
  6283. INT 14 - COMMUNICATIONS FOSSIL
  6284.     AH = 80h
  6285. SeeAlso: AH=7Eh
  6286. ----------1480-------------------------------
  6287. INT 14 - COURIERS.COM - INSTALLATION CHECK
  6288.     AH = 80h
  6289. Return: AH = E8h if loaded
  6290. Note:    COURIERS is a TSR utility by PC Magazine
  6291. ----------148000-----------------------------
  6292. INT 14 - ARTICOM - INSTALLATION CHECK
  6293.     AX = 8000h
  6294. Return: AL = FFh if installed
  6295.         BH = major version
  6296.         BL = minor version
  6297. Program: ArtiCom is an asynchronous communications driver by Artisoft which
  6298.       works on top of NetBIOS and allows modem/serial-port sharing by
  6299.       programs using INT 14 for serial I/O.
  6300. Note:    ArtiCom supports 32 simultaneous COM ports using multiport cars and
  6301.       drivers
  6302. SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=05h,AX=8001h,AX=8002h
  6303. ----------148001-----------------------------
  6304. INT 14 - ARTICOM - UNLOAD ASYNCHRONOUS REDIRECTOR FROM MEMORY
  6305.     AX = 8001h
  6306. Return: AX = error code, if error (see AX=8003h)
  6307. SeeAlso: AX=8000h,AX=8002h,AX=8003h
  6308. ----------148002-----------------------------
  6309. INT 14 - ARTICOM - GET ASYNCHRONOUS REDIRECTOR STATUS
  6310.     AX = 8002h
  6311.     ES:DI -> buffer for redirector status structure (see below)
  6312. Return: AX = error code, if error (see AX=8003h)
  6313. SeeAlso: AX=8000h,AX=8003h
  6314.  
  6315. Format of redirector status:
  6316. Offset    Size    Description  
  6317.  00h    WORD    redirector major and minor version numbers
  6318.  02h    WORD    redirectable ports found
  6319.  04h    WORD    redirectable ports + local ports found
  6320.  06h    WORD    redirector internal buffer size
  6321.  08h    WORD    maximum servers maintained
  6322.  0Ah    WORD    number of adapters found
  6323. ----------148003-----------------------------
  6324. INT 14 - ARTICOM - TRANSLATE ERROR CODE TO ERROR STRING
  6325.     AX = 8003h
  6326.     CX = error number to translate
  6327. Return: ES:DI -> ASCIZ error text or NULL if can't translate.
  6328. SeeAlso: AX=8000h
  6329.  
  6330. Values for error codes:
  6331.  00h    "No error"
  6332.  01h    "An invalid port number was specified"
  6333.  02h    "Port is already redirected"
  6334.  03h    "Too many ports redirected"
  6335.  04h    "Cannot locate the server"
  6336.  05h    "Server is busy"
  6337.  06h    "Access denied"
  6338.  07h    "Resource in use"
  6339.  08h    "Resource in use - request queued"
  6340.  09h    "No such resource"
  6341.  0Ah    "Invalid username/password pair"
  6342.  0Bh    "Noncompatible version number"
  6343.  0Ch    "Can't remove from memory"
  6344.  0Dh    "Bad NETBIOS adapter number"
  6345.  0Eh    "No more entries in list"
  6346.  0Fh    "Resource is not available at this time"
  6347.  10h    "Invalid value to INT 14 call"
  6348. ----------148004-----------------------------
  6349. INT 14 - ARTICOM - ATTACH ASYNCHRONOUS RESOURCE
  6350.     AX = 8004h
  6351.     DX = port to redirect (COM1=0, COM2=1, ...)
  6352.     CH = attach type
  6353.     CL = adapter to use for attach, 0FFh to search all
  6354.     ES:DI -> attachment structure (see below)
  6355. Return: AX = error code, if error (see AX=8003h)
  6356. Note:    The wildcard '*' is supported in the server and resource fields.  If
  6357.       wild cards are used then the first matching available server is
  6358.       attached.
  6359. SeeAlso: AX=8000h,AX=8003h,AX=8005h
  6360.  
  6361. Format of attachment structure:
  6362. Offset    Size    Description  
  6363.  00h 16 BYTEs    server to look for attach
  6364.  10h 16 BYTEs    attach to resource name
  6365.  20h 16 BYTEs    username for attach
  6366.  30h 16 BYTEs    password for username or resource
  6367.  40h    BYTE    attach type
  6368.         00h normal
  6369.         01h queue if resource is in use (not yet supported in v1.00)
  6370. ----------148005-----------------------------
  6371. INT 14 - ARTICOM - DETACH ASYNCHRONOUS RESOURCE
  6372.     AX = 8005h
  6373.     DX = port to detach (COM1=0, COM2=1, ...)
  6374. Return: AX = error code, if error (see AX=8003h)
  6375. Note:    only a previously attached resource can be detached
  6376. SeeAlso: AX=8000h,AX=8003h,AX=8004h
  6377. ----------148006-----------------------------
  6378. INT 14 - ARTICOM - GET RESOURCE INFORMATION
  6379.     AX = 8006h
  6380.     BX = remote port (COM1=0, COM2=1, ...)
  6381.     CL = adapter number, FFH to try all adapters 
  6382.     ES:DI -> resource information structure (see below)
  6383.     DS:SI -> 16 byte server name. See note.
  6384. Return: AX = error code, if error (see AX=8003h)
  6385.     BX = next remote port, recall to get next resource info
  6386. Note:    Wild cards supported in both the resource field and server name 
  6387.     string DS:SI. If wild cards used then first matching available
  6388.     resource information is searched. Set resource field to 0FFh to
  6389.     return all resources.
  6390. SeeAlso: AX=8000h,AX=8002h,AX=8003h,AX=8007h
  6391.  
  6392. Format of resource information structure:
  6393. Offset    Size    Description
  6394.  00h    BYTE    00h = free, else used
  6395.  01h 16 BYTEs    resource name
  6396.  11h 16 BYTEs    username of resource user
  6397.  21h    WORD    amount of time used
  6398.  23h    WORD    amount of time remaining
  6399.  53h 48 BYTEs    description of resource
  6400.  93h 64 BYTEs    initialization string for modem 
  6401.  B3h 32 BYTEs    dial string for modem 
  6402.  D3h 32 BYTEs    hang-up string for modem 
  6403. ----------148007-----------------------------
  6404. INT 14 - ARTICOM - GET REDIRECTED PORT INFORMATION
  6405.     AX = 8007h
  6406.     DX = port index (COM1=0, COM2=1, ...)
  6407.     ES:DI -> buffer for port information structure (see below)
  6408. Return: CF clear if redirection info returned and port is redirected
  6409.     CF set if not a redirected port
  6410.     AX = error code, if error (see AX=8003h)
  6411. SeeAlso: AX=8000h,AX=8003h,AX=8006h,AX=8008h
  6412.  
  6413. Format of port information structure:
  6414. Offset    Size    Description
  6415.  00h 16 BYTEs    server name resource is on
  6416.  10h    BYTE    adapter number server is on
  6417.  11h    BYTE    resource name
  6418.  21h    WORD    remote port index, use to get additional information
  6419.  23h    WORD    buffer size
  6420.  25h    WORD    baud rate (see below)
  6421.  26h    BYTE    modem status register
  6422.  27h    BYTE    modem control register
  6423.  28h    BYTE    line status register
  6424.  29h    BYTE    line control register
  6425.  2Ah    BYTE    flow control in use: 0 - NONE, 1 - XON/XOFF, 2 - RTS/CTS
  6426.  2Bh    WORD    send timeout in ticks
  6427.  2Dh    WORD    receive timeout in ticks
  6428.  2Fh    WORD    time used on remote port
  6429.  31h    WORD    time left before timeout
  6430.  33h    BYTE    if server changes allowed?
  6431.  34h    WORD    FFFFh (-1) if connection ok, else old port index
  6432.  
  6433. Values for baud rate:
  6434.  00h    110
  6435.  01h    150
  6436.  02h    300
  6437.  03h    600
  6438.  04h    1200
  6439.  05h    2400
  6440.  06h    4800
  6441.  07h    9600
  6442.  08h    19200
  6443.  09h    38400
  6444.  0Ah    57600
  6445.  0Bh    115200
  6446.  0Ch    134.5
  6447.  0Dh    1800
  6448.  0Eh    2000
  6449.  0Fh    3600
  6450.  10h    7200
  6451. ----------148008-----------------------------
  6452. INT 14 - ARTICOM - GET AVAILABLE SERVER NAME
  6453.     AX = 8008h
  6454.     BX = server index (0,1,...)
  6455.     ES:DI -> server name structure (see below)
  6456. Return: AX = error code, if error (see AX=8003)
  6457.     BX = next remote port, repeat call to get next available server
  6458. Note:    the wildcard '*' is supported in the server name field.     Set the
  6459.       server name to FFh to search for all servers.
  6460. SeeAlso: AX=8000h,AX=8003h,AX=8007h
  6461.  
  6462. Format of server name structure:
  6463. Offset     Size      Description
  6464.   00h 16 BYTEs      (call) ASCIZ servername
  6465.   10h     BYTE      (return) the adapter server is found
  6466. ----------148009-----------------------------
  6467. INT 14 - ARTICOM - SET SEND AND RECEIVE TIMEOUTS 
  6468.     AX = 8009h
  6469.     BX = send timeout in ticks
  6470.     CX = receive timeout in ticks
  6471.     DX = port index (COM1=0, COM2=1, ...)
  6472. Return: nothing
  6473. SeeAlso: AX=8000h,AX=800Ah
  6474. ----------14800A-----------------------------
  6475. INT 14 - ARTICOM - MODIFY FLOW CONTROL
  6476.     AX = 800Ah
  6477.     BL = flow control type (00h none, 01h XON/XOFF, 02h RTS/CTS)
  6478.     DX = port index (COM1=0, COM2=1, ...)
  6479. Return: AX = error code, if error (see AX=8003h)
  6480. Note:    for attached ports only!
  6481. SeeAlso: AX=8000h,AX=8003h,AX=8009h
  6482. ----------148025-----------------------------
  6483. INT 14 - ARTICOM - SET INTERNAL SEND/RECEIVE VECTOR
  6484.     AX = 8025h
  6485.     DS:DX -> address of trap function (see below) to call on read/write
  6486. Note:    setting the vector to a user function allows the redirector's activity
  6487.       to be monitored.
  6488. SeeAlso: AX=8000h,AX=8035h,INT 21/AH=25h
  6489.  
  6490. Trap function called with:
  6491.     AH = operation
  6492.         80h reading character
  6493.         81h writing character
  6494.     AL = character
  6495.     Return: AX must be preserved
  6496.         far JUMP to old trap function (see AX=8035h)
  6497. ----------148035-----------------------------
  6498. INT 14 - ARTICOM - GET INTERNAL SEND/RECEIVE VECTOR
  6499.     AX = 8035h
  6500. Return: ES:BX -> address of current send/receive routine
  6501. Note:    this function returns the address of the routine which is called 
  6502.       inside A-REDIR.EXE each time a character is received or sent on the
  6503.       active COM port.
  6504. SeeAlso: AX=8000h,AX=8025h,INT 21/AH=35h
  6505. ----------1481-------------------------------
  6506. INT 14 - COURIERS.COM - CHECK IF PORT BUSY
  6507.     AH = 81h
  6508.     AL = port number (1-4)
  6509. Return: AH = 00h port available
  6510.          01h port exists but already in use
  6511.          02h port nonexistent
  6512. Note:    COURIERS is a TSR utility by PC Magazine
  6513. SeeAlso: AH=83h,AH=8Dh
  6514. ----------1481-------------------------------
  6515. INT 14 - Egberto Willies COMM-DRV - EXTENDED INITIALIZATION
  6516.     AH = 81h
  6517.     BX:DI -> port control block
  6518. Return: ???
  6519. SeeAlso: AH=00h
  6520.  
  6521. Format of port control block:
  6522. Offset    Type    Description
  6523.  00h    WORD    port IO address
  6524.  02h    WORD    port IRQ
  6525.  04h    WORD    baud rate
  6526.  06h    WORD    parity
  6527.  08h    WORD    data bits
  6528.  0Ah    WORD    stop bits
  6529.  0Ch    WORD    break status
  6530.             0000h off
  6531.  0Eh    WORD    flow control protocol
  6532.  10h    BYTE    input block
  6533.  11h    BYTE    output block
  6534.  12h    WORD    low threshold
  6535.  14h    WORD    high threshold
  6536.  16h    WORD    segment of buffer
  6537.  18h    WORD    offset of buffer
  6538.  1Ah    WORD    input buffer length
  6539.  1Ch    WORD    output buffer length
  6540.  1Eh    BYTE    auxiliary address
  6541.  1Fh    BYTE    spare
  6542.  20h  4 WORDs    spares
  6543. ----------148100-----------------------------
  6544. INT 14 - VIDEO FOSSIL - RETURN VFOSSIL INFORMATION
  6545.     AX = 8100h
  6546.     ES:DI -> buffer for VFOSSIL information (see below)
  6547. Return: AX = 1954h if installed
  6548. SeeAlso: AH=7Eh,AX=8101h
  6549.  
  6550. Format of VFOSSIL information:
  6551. Offset    Size    Description
  6552.  00h    WORD    size of information in bytes, including this field
  6553.  02h    WORD    VFOSSIL major version
  6554.  04h    WORD    VFOSSIL revision level
  6555.  06h    WORD    highest VFOSSIL application function supported
  6556. ----------148101-----------------------------
  6557. INT 14 - VIDEO FOSSIL - OPEN VFOSSIL
  6558.     AX = 8101h
  6559.     ES:DI -> buffer for application function table (see below)
  6560.     CX = length of buffer in bytes
  6561. Return: AX = 1954h if installed
  6562.         BH = highest VFOSSIL application function supported
  6563. Note:    the number of initialized pointers in the application function table
  6564.       will never exceed CX/4; if the buffer is large enough, BH+1 pointers
  6565.       will be initialized
  6566. SeeAlso: AX=8102h
  6567.  
  6568. Format of application function table:
  6569. Offset    Size    Description
  6570.  00h    DWORD    -> function to query current video mode (VioGetMode)
  6571.  04h    DWORD    -> function to set video mode (VioSetMode)
  6572.  08h    DWORD    -> function to query hardware config (VioGetConfig)
  6573.  0Ch    DWORD    -> function to write data in TTY mode (VioWrtTTY)
  6574.  10h    DWORD    -> function to get current ANSI state (VioGetANSI)
  6575.  14h    DWORD    -> function to set new ANSI state (VioSetANSI)
  6576.  18h    DWORD    -> function to get curr cursor position (VioGetCurPos)
  6577.  1Ch    DWORD    -> function to set cursor position (VioSetCurPos)
  6578.  20h    DWORD    -> function to get cursor shape (VioGetCurType)
  6579.  24h    DWORD    -> function to set cursor shape (VioSetCurType)
  6580.  28h    DWORD    -> function to scroll screen up (VioScrollUp)
  6581.  2Ch    DWORD    -> function to scroll screen down (VioScrollDn)
  6582.  30h    DWORD    -> function to read cell string from screen (VioReadCellStr)
  6583.  34h    DWORD    -> function to read char string from screen (VioReadCharStr)
  6584.  38h    DWORD    -> function to write a cell string (VioWrtCellStr)
  6585.  3Ch    DWORD    -> function to write char string, leaving attr (VioWrtCharStr)
  6586.  40h    DWORD    -> function to write char string,const attr (VioWrtCharStrAttr)
  6587.  44h    DWORD    -> function to replicate an attribute (VioWrtNAttr)
  6588.  48h    DWORD    -> function to replicate a cell (VioWrtNCell)
  6589.  4Ch    DWORD    -> function to replicate a character (VioWrtNChar)
  6590.  
  6591. Format of video mode data structure:
  6592. Offset    Size    Description
  6593.  00h    WORD    length of structure including this field
  6594.  02h    BYTE    mode characteristics
  6595.         bit 0: clear if MDA, set otherwise
  6596.         bit 1: graphics mode
  6597.         bit 2: color disabled (black-and-white)
  6598.  03h    BYTE    number of colors supported (1=2 colors, 4=16 colors, etc)
  6599.  04h    WORD    number of text columns
  6600.  06h    WORD    number of text rows
  6601.  08h    WORD    reserved
  6602.  0Ah    WORD    reserved
  6603.  0Ch    DWORD    reserved
  6604.  
  6605. Format of video configuration data:
  6606. Offset    Size    Description
  6607.  00h    WORD    structure length including this field
  6608.  02h    WORD    adapter type
  6609.         00h monochrome/printer
  6610.         01h CGA
  6611.         02h EGA
  6612.         03h VGA
  6613.         07h 8514/A
  6614.  04h    WORD    display type
  6615.         00h monochrome
  6616.         01h color
  6617.         02h enhanced color
  6618.         09h 8514
  6619.  06h    DWORD    adapter memory size
  6620.  
  6621. Format of cursor type record:
  6622. Offset    Size    Description
  6623.  00h    WORD    cursor start line
  6624.  02h    WORD    cursor end line
  6625.  04h    WORD    cursor width (always 01h)
  6626.  06h    WORD    cursor attribute (FFFFh = hidden)
  6627.  
  6628. Call VioGetMode with:
  6629.     STACK:    WORD    VIO handle (must be 00h)
  6630.         DWORD    pointer to video mode data structure (see above)
  6631. Return: AX = error code (00h, 74h, 17Eh, 1B4h)
  6632.         0000h successful
  6633.         0074h internal VIO failure
  6634.         0163h unsupported mode
  6635.         0166h invalid row value
  6636.         0167h invalid column value
  6637.         017Eh buffer too small
  6638.         01A5h invalid VIO parameter
  6639.         01B4h invalid VIO handle
  6640.  
  6641. Call VioSetMode with:
  6642.     STACK:    WORD    VIO handle (must be 00h)
  6643.         DWORD    pointer to video mode data structure (see above)
  6644. Return: AX = error code (00h, 74h, 163h, 17Eh, 1A5h, 1B4h) (see above)
  6645.  
  6646. Call VioGetConfig with:
  6647.     STACK:    WORD    VIO handle (must be 00h)
  6648.         DWORD    pointer to video configuration data buffer (see above)
  6649. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see above)
  6650.  
  6651. Call VioWrtTTY with:
  6652.     STACK:    WORD    VIO handle (must be 00h)
  6653.         WORD    length of string
  6654.         DWORD    pointer to character string to be written to screen
  6655. Return: AX = error code (00h, 74h, 1B4h) (see above)
  6656. Notes:    write wraps at end of line and terminates if it reaches end of screen
  6657.     in ANSI mode, ANSI control sequences are interpreted, and this func is
  6658.       not required to be reentrant; in non-ANSI mode, the function is
  6659.       reentrant and may be called from within an MSDOS function call
  6660.  
  6661. Call VioGetANSI with:
  6662.     STACK:    WORD    VIO handle (must be 00h)
  6663.         DWORD    pointer to WORD which will be set to 00h if ANSI is off
  6664.             or 01h if ANSI is on
  6665. Return: AX = error code (00h, 74h, 1B4h) (see above)
  6666.  
  6667. Call VioSetANSI with:
  6668.     STACK:    WORD    VIO handle (must be 00h)
  6669.         DWORD    pointer to WORD indicating new state of ANSI
  6670.             00h off
  6671.             01h on
  6672. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see above)
  6673.  
  6674. Call VioGetCurPos with:
  6675.     STACK:    WORD    VIO handle (must be 00h)
  6676.         DWORD    pointer to WORD to hold current cursor column (0-based)
  6677.         DWORD    pointer to WORD to hold current cursor row (0-based)
  6678. Return: AX = error code (00h, 74h, 1B4h) (see above)
  6679.  
  6680. Call VioSetCurPos with:
  6681.     STACK:    WORD    VIO handle (must be 00h)
  6682.         WORD    cursor column
  6683.         WORD    cursor row
  6684. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  6685. Note:    if either coordinate is invalid, the cursor is not moved
  6686.  
  6687. Call VioGetCurType with:
  6688.     STACK:    WORD    VIO handle (must be 00h)
  6689.         DWORD    pointer to cursor type record (see above)
  6690. Return: AX = error code (00h, 74h, 1B4h) (see above)
  6691.  
  6692. Call VioSetCurType with:
  6693.     STACK:    WORD    VIO handle (must be 00h)
  6694.         DWORD    pointer to cursor type record (see above)
  6695. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see above)
  6696.  
  6697. Call VioScrollUp with:
  6698.     STACK:    WORD    VIO handle (must be 00h)
  6699.         DWORD    pointer to char/attr cell for filling emptied rows
  6700.         WORD    number or rows to scroll (FFFFh = clear area)
  6701.         WORD    right column of scroll area
  6702.         WORD    bottom row of scroll area
  6703.         WORD    left column of scroll area
  6704.         WORD    top row of scroll area
  6705. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  6706.  
  6707. Call VioScrollDn with:
  6708.     STACK:    WORD    VIO handle (must be 00h)
  6709.         DWORD    pointer to char/attr cell for filling emptied rows
  6710.         WORD    number or rows to scroll (FFFFh = clear area)
  6711.         WORD    right column of scroll area
  6712.         WORD    bottom row of scroll area
  6713.         WORD    left column of scroll area
  6714.         WORD    top row of scroll area
  6715. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  6716.  
  6717. Call VioReadCellStr with:
  6718.     STACK:    WORD    VIO handle (must be 00h)
  6719.         WORD    column at which to start reading
  6720.         WORD    row at which to start reading
  6721.         DWORD    pointer to WORD containing length of buffer in bytes
  6722.             on return, WORD contains number of bytes actually read
  6723.         DWORD    pointer to buffer for cell string
  6724. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see above)
  6725.  
  6726. Call VioReadCharStr with:
  6727.     STACK:    WORD    VIO handle (must be 00h)
  6728.         WORD    column at which to start reading
  6729.         WORD    row at which to start reading
  6730.         DWORD    pointer to WORD containing length of buffer in bytes
  6731.             on return, WORD contains number of bytes actually read
  6732.         DWORD    pointer to buffer for character string
  6733. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see above)
  6734.  
  6735. Call VioWrtCellStr with:
  6736.     STACK:    WORD    VIO handle (must be 00h)
  6737.         WORD    column at which to start writing
  6738.         WORD    row at which to start writing
  6739.         WORD    length of cell string in bytes
  6740.         DWORD    pointer to cell string to write
  6741. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  6742. Note:    write wraps at end of line and terminates if it reaches end of screen
  6743.  
  6744. Call VioWrtCharStr with:
  6745.     STACK:    WORD    VIO handle (must be 00h)
  6746.         WORD    column at which to start writing
  6747.         WORD    row at which to start writing
  6748.         WORD    length of character string
  6749.         DWORD    pointer to character string to write
  6750. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  6751. Note:    write wraps at end of line and terminates if it reaches end of screen
  6752.  
  6753. Call VioWrtCharStrAttr with:
  6754.     STACK:    WORD    VIO handle (must be 00h)
  6755.         DWORD    pointer to attribute to be applied to each character
  6756.         WORD    column at which to start writing
  6757.         WORD    row at which to start writing
  6758.         WORD    length of character string
  6759.         DWORD    pointer to character string to write
  6760. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  6761. Note:    write wraps at end of line and terminates if it reaches end of screen
  6762.  
  6763. Call VioWrtNAttr with:
  6764.     STACK:    WORD    VIO handle (must be 00h)
  6765.         WORD    column at which to start writing
  6766.         WORD    row at which to start writing
  6767.         WORD    number of times to write attribute
  6768.         DWORD    pointer to display attribute to replicate
  6769. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  6770. Note:    write wraps at end of line and terminates if it reaches end of screen
  6771.  
  6772. Call VioWrtNCell with:
  6773.     STACK:    WORD    VIO handle (must be 00h)
  6774.         WORD    column at which to start writing
  6775.         WORD    row at which to start writing
  6776.         WORD    number of times to write cell
  6777.         DWORD    pointer to cell to replicate
  6778. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  6779. Note:    write wraps at end of line and terminates if it reaches end of screen
  6780.  
  6781. Call VioWrtNChar with:
  6782.     STACK:    WORD    VIO handle (must be 00h)
  6783.         WORD    column at which to start writing
  6784.         WORD    row at which to start writing
  6785.         WORD    number of times to write character
  6786.         DWORD    pointer to character to replicate
  6787. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see above)
  6788. Note:    write wraps at end of line and terminates if it reaches end of screen
  6789. ----------148102-----------------------------
  6790. INT 14 - VIDEO FOSSIL - CLOSE VFOSSIL
  6791.     AX = 8102h
  6792. Return: AX = 1954h
  6793. Note:    terminates all operations; after this call, the video FOSSIL may either
  6794.       be removed from memory or reinitialized
  6795. SeeAlso: AX=8101h,AX=8103h
  6796. ----------148103-----------------------------
  6797. INT 14 - VIDEO FOSSIL - UNINSTALL
  6798.     AX = 8103h
  6799. Return:    AX = 1954h
  6800. Note:    this is an extension to the VFOSSIL spec by Bob Hartman's VFOS_IBM
  6801. ----------1482-------------------------------
  6802. INT 14 - KEYBOARD FOSSIL
  6803.     AH = 82h
  6804. SeeAlso: AH=7Eh
  6805. ----------1482-------------------------------
  6806. INT 14 - COURIERS.COM - CONFIGURE PORT
  6807.     AH = 82h
  6808.     AL = port number (1-4)
  6809.     BX = speed (bps)
  6810.     CX = bit flags
  6811.         bit 0: enable input flow control
  6812.         bit 1: enable output flow control
  6813.         bit 2: use X.PC protocol (not yet implemented)
  6814. SeeAlso: AH=00h,AH=8Ch,INT 7A"X.PC"
  6815. ----------1483-------------------------------
  6816. INT 14 - SYSTEM FOSSIL
  6817.     AH = 83h
  6818. SeeAlso: AH=7Eh
  6819. ----------1483-------------------------------
  6820. INT 14 - COURIERS.COM - START INPUT
  6821.     AH = 83h
  6822.     ES:BX -> circular input buffer
  6823.     CX = length of buffer 
  6824.         (should be at least 128 bytes if input flow control enabled)
  6825. SeeAlso: AH=18h,AH=87h,AH=8Dh,AH=A5h"BAPI"
  6826. ----------1484-------------------------------
  6827. INT 14 - COURIERS.COM - READ CHARACTER
  6828.     AH = 84h
  6829. Return: ZF set if no characters available
  6830.     ZF clear
  6831.        AL = character
  6832.        AH = modem status bits
  6833.         bit 7: set on input buffer overflow
  6834. SeeAlso: AH=02h,AH=86h,AH=89h
  6835. ----------1485-------------------------------
  6836. INT 14 - COURIERS.COM - FLUSH PENDING INPUT
  6837.     AH = 85h
  6838. SeeAlso: AH=0Ah,AH=88h
  6839. ----------1486-------------------------------
  6840. INT 14 - COURIERS.COM - START OUTPUT
  6841.     AH = 86h
  6842.     ES:BX -> output buffer
  6843.     CX = length of output buffer
  6844. SeeAlso: AH=19h,AH=83h"COURIERS",AH=A4h"BAPI"
  6845. ----------1487-------------------------------
  6846. INT 14 - COURIERS.COM - OUTPUT STATUS
  6847.     AH = 87h
  6848. Return: AX = number of unsent characters
  6849. ----------1488-------------------------------
  6850. INT 14 - COURIERS.COM - ABORT OUTPUT
  6851.     AH = 88h
  6852. SeeAlso: AH=09h,AH=85h
  6853. ----------1489-------------------------------
  6854. INT 14 - COURIERS.COM - SEND SINGLE CHARACTER
  6855.     AH = 89h
  6856.     CL = character to send
  6857. SeeAlso: AH=01h,AH=84h
  6858. ----------148A-------------------------------
  6859. INT 14 - COURIERS.COM - SEND BREAK
  6860.     AH = 8Ah
  6861. SeeAlso: AH=89h,AH=FAh
  6862. ----------148C-------------------------------
  6863. INT 14 - COURIERS.COM - SET SPEED
  6864.     AH = 8Ch
  6865.     BX = speed in bps
  6866. SeeAlso: AH=00h,AH=82h"COURIERS"
  6867. ----------148D-------------------------------
  6868. INT 14 - COURIERS.COM - DECONFIGURE PORT
  6869.     AH = 8Dh
  6870. SeeAlso: AH=82h"COURIERS"
  6871. ----------14A0-------------------------------
  6872. INT 14 - 3com BAPI SERIAL I/O - CONNECT TO PORT
  6873.     AH = A0h
  6874.     ???
  6875. Return: ???
  6876. SeeAlso: AH=A1h"BAPI"
  6877. ----------14A0--CXFFFF-----------------------
  6878. INT 14 - Interconnections Inc. TES - INSTALLATION CHECK/STATUS REPORT
  6879.     AH = A0h
  6880.     CX = FFFFh
  6881. Return: CF clear if successful
  6882.         AX = 5445h ('TE')
  6883.         CX <> FFFFh
  6884.         DX = port number
  6885.     CF set on error
  6886. Note:    TES is a network serial port emulation program
  6887. SeeAlso: AH=A1h"TES"
  6888. ----------14A1-------------------------------
  6889. INT 14 - 3com BAPI SERIAL I/O - DISCONNECT FROM PORT
  6890.     AH = A1h
  6891.     ???
  6892. Return: ???
  6893. SeeAlso: AH=A0h"BAPI"
  6894. ----------14A1-------------------------------
  6895. INT 14 - Interconnections Inc. TES - GET LIST OF SESSIONS WITH STATUS
  6896.     AH = A1h
  6897. Return: CX = number of active sessions
  6898.     ES:SI -> status array (see below)
  6899. SeeAlso: AH=A2h"TES",AH=A3h"TES"
  6900.  
  6901. Format of status array entry:
  6902. Offset    Size    Description
  6903.  00h    BYTE    status
  6904.  01h    WORD    offset of name
  6905. ----------14A2-------------------------------
  6906. INT 14 - Interconnections Inc. TES - GET LIST OF SERVER NAMES
  6907.     AH = A2h
  6908. Return:    CX = number of servers
  6909.     ES:SI -> array of offsets from ES for server names
  6910. SeeAlso: AH=A1h"TES"
  6911. ----------14A3-------------------------------
  6912. INT 14 - Interconnections Inc. TES - START A NEW SESSION
  6913.     AH = A3h
  6914.     ES:SI -> ???
  6915. Return: CF clear if successful
  6916.         AX = 5445h ('TE')
  6917.         CX <> FFFFh
  6918.         DX = port number
  6919.     CF set on error
  6920. SeeAlso: AH=A1h"TES",AH=A4h"TES",AH=A6h"TES"
  6921. ----------14A4-------------------------------
  6922. INT 14 - 3com BAPI SERIAL I/O - WRITE BLOCK
  6923.     AH = A4h
  6924.     CX = length
  6925.     DH = session number (00h)
  6926.     ES:BX -> buffer
  6927. Return: CX = number of bytes sent
  6928. SeeAlso: AH=19h,AH=86h,AH=A5h"BAPI"
  6929. ----------14A4-------------------------------
  6930. INT 14 - Interconnections Inc. TES - HOLD CURRENTLY ACTIVE SESSION
  6931.     AH = A4h
  6932.     ???
  6933. Return: ???
  6934. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  6935. ----------14A5-------------------------------
  6936. INT 14 - 3com BAPI SERIAL I/O - READ BLOCK
  6937.     AH = A5h
  6938.     CX = length
  6939.     DH = session number (00h)
  6940.     ES:BX -> buffer
  6941. Return: CX = number of bytes read
  6942. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A4h"BAPI",AX=FF02h
  6943. ----------14A5-------------------------------
  6944. INT 14 - Interconnections Inc. TES - RESUME A SESSION
  6945.     AH = A5h
  6946.     AL = session number
  6947. Return: ???
  6948. SeeAlso: AH=A4h"TES",AH=A6h"TES"
  6949. ----------14A6-------------------------------
  6950. INT 14 - 3com BAPI SERIAL I/O - SEND SHORT BREAK
  6951.     AH = A6h
  6952.     DH = session number (00h)
  6953. SeeAlso: AH=1Ah,AH=8Ah,AH=FAh
  6954. ----------14A6-------------------------------
  6955. INT 14 - Interconnections Inc. TES - DROP A SESSION
  6956.     AH = A6h
  6957.     AL = session number
  6958. Return: AH = status
  6959.         00h successful
  6960.         else error
  6961. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  6962. ----------14A7-------------------------------
  6963. INT 14 - 3com BAPI SERIAL I/O - READ STATUS
  6964.     AH = A7h
  6965.     ???
  6966. Return: ???
  6967. ----------14A7-------------------------------
  6968. INT 14 - Interconnections Inc. TES - SWITCH TO NEXT ACTIVE SESSION
  6969.     AH = A7h
  6970.     ???
  6971. Return: ???
  6972. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  6973. ----------14A8-------------------------------
  6974. INT 14 - Interconnections Inc. TES - SEND STRING TO COMMAND INTERPRETER
  6975.     AH = A8h
  6976.     AL = 00h no visible response
  6977.     ES:SI -> ASCIZ command
  6978. Return: ???
  6979. ----------14AF00BXAAAA-----------------------
  6980. INT 14 - 3com BAPI SERIAL I/O - INSTALLATION CHECK
  6981.     AX = AF00h
  6982.     BX = AAAAh
  6983. Return: AX = AF01h if installed
  6984. ----------14B0-------------------------------
  6985. INT 14 - 3com BAPI SERIAL I/O - ENABLE/DISABLE "ENTER COMMAND MODE" CHARACTER
  6986.     AH = B0h
  6987.     AL = 00h disable
  6988.        = 01h enable
  6989. ----------14B1-------------------------------
  6990. INT 14 - 3com BAPI SERIAL I/O - ENTER COMMAND MODE
  6991.     AH = B1h
  6992. ----------14F0F0-----------------------------
  6993. INT 14 - ASAP v1.0 - ???
  6994.     AX = F0F0h
  6995.     DX = ???
  6996.     ???
  6997. Return: ???
  6998. Note:    ASAP (Automatic Screen Access Program) is a shareware screen reader by
  6999.       MicroTalk
  7000. SeeAlso: AX=F0F1h
  7001. ----------14F0F1DX0000-----------------------
  7002. INT 14 - ASAP v1.0 - INSTALLATION CHECK
  7003.     AX = F0F1h
  7004.     DX = 0000h
  7005. Return: DX = segment of resident code
  7006.        = 0000h if not installed
  7007. Note:    ASAP (Automatic Screen Access Program) is a shareware screen reader by
  7008.       MicroTalk
  7009. SeeAlso: AX=F0F0h,INT 10/AH=38h
  7010. ----------14F4FF-----------------------------
  7011. INT 14 - IBM/Yale EBIOS SERIAL I/O - INSTALLATION CHECK
  7012.     AX = F4FFh
  7013.     DX = port (00h-03h)
  7014. Return: CF clear if present
  7015.         AX = 0000h
  7016.     CF set if not present
  7017.         AX <> 0000h
  7018. ----------14F9-------------------------------
  7019. INT 14 - IBM/Yale EBIOS SERIAL I/O - REGAIN CONTROL
  7020.     AH = F9h
  7021.     DX = port (00h-03h)
  7022. ----------14FA-------------------------------
  7023. INT 14 - IBM/Yale EBIOS SERIAL I/O - SEND BREAK
  7024.     AH = FAh
  7025.     DX = port (00h-03h)
  7026. SeeAlso: AH=1Ah,AH=8Ah
  7027. ----------14FB-------------------------------
  7028. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET OUTGOING MODEM SIGNALS
  7029.     AH = FBh
  7030.     AL = modem control register
  7031.         bit 0: data terminal ready
  7032.         1: request to send
  7033.         2: OUT1
  7034.         3: OUT2
  7035.         4: loopback
  7036.         bits 5-7 unused
  7037.     DX = port (00h-03h)
  7038. ----------14FC-------------------------------
  7039. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ CHARACTER, NO WAIT
  7040.     AH = FCh
  7041.     DX = port (00h-03h)
  7042. Return: AH = RS232 status bits (see AH=00h)
  7043.     AL = character
  7044. SeeAlso: AH=02h,AH=0Ch,AX=FF02h
  7045. ----------14FD02-----------------------------
  7046. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ STATUS
  7047.     AX = FD02h
  7048. Return: CX = number of characters available
  7049. ----------14FF02-----------------------------
  7050. INT 14 - IBM/Yale EBIOS SERIAL I/O - BUFFERED READ
  7051.     AX = FF02h
  7052.     CX = length
  7053.     DX = port (00h-03h)
  7054.     ES:BX -> buffer
  7055. Return: CX = number of characters read
  7056. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh
  7057. ---------------------------------------------
  7058.